Wewnątrz przenośnej biblioteki klas, mam następującą metodę, która publikuje dane do określonego adresu URL. Metoda działa świetnie. Jednak chciałbym podać bardziej agresywny limit czasu (domyślnie jest to 100 sekund).Jak zdefiniować bardziej agresywny limit czasu dla HttpWebRequest?
Biorąc pod uwagę, że nie ma właściwości Timeout w klasie HttpWebRequest z biblioteki klas przenośnych, w jaki sposób mogę się upewnić, że połączenie zostanie przerwane, jeśli trwa dłużej niż kilka sekund?
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; ? to jest wystarczająco inteligentne? –