[英]Timeout behaviour in HttpWebRequest.GetResponse() vs GetResponseAsync()
當我嘗試以下代碼時:
var request = (HttpWebRequest)HttpWebRequest.Create(url);
request.Timeout = 3; // a small value
var response = request.GetResponse();
Console.WriteLine(response.ContentLength);
對於我知道加載時間超過 3 毫秒的 URL(我在Application_BeginRequest
放置了一個Thread.Sleep(110000)
)它工作正常WebException
預期拋出WebException
。
問題是當我切換到異步方法時:
var response = request.GetResponseAsync().Result;
或者
var response = await request.GetResponseAsync();
此異步版本完全忽略任何超時值,包括ReadWriteTimeout
和ServicePoint.MaxIdleTime
我在 MSDN 的GetResponseAsync()
找不到任何關於超時的信息,現在我想知道這是GetResponseAsync()
中的錯誤還是我在這里使用異步的方式有問題?
按照解決方案解決問題。
await Task.Run(() => {
var varHttpResponse = varWebRequest.GetResponse();
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.