All'interno di una libreria di classi portatili, ho il seguente metodo che invia i dati a un URL specifico. Il metodo funziona alla grande. Tuttavia mi piacerebbe specificare un timeout più aggressivo (il valore predefinito è 100 secondi).Come definire un timeout più aggressivo per HttpWebRequest?
Considerando che non esiste una proprietà Timeout sulla classe HttpWebRequest dalla libreria delle classi portatili, come posso verificare che la chiamata venga abbandonata se impiega più di qualche secondo?
public async Task<HttpResponse> PostAsync(Uri uri, string data)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
using (Stream requestStream = await request.GetRequestStreamAsync())
{
byte[] postBytes = Encoding.UTF8.GetBytes(data);
requestStream.Write(postBytes, 0, postBytes.Length);
}
HttpWebResponse response = (HttpWebResponse)await request.GetResponseAsync();
return new HttpResponse(response.StatusCode, await new StreamReader(response.GetResponseStream()).ReadToEndAsync());
}
HttpWebRequest.Timeout = 20000; ? questo è abbastanza intelligente? –