如果我执行此操作并在其旁边运行Fiddler并为该请求设置一个断点以使其超时,那么为什么它不像应该的那样超时? (我使用await)
如果我将代码更改为DownloadString,它会.. ????
class MyWebClient : WebClient
{
protected override WebRequest GetWebRequest(Uri address)
{
WebRequest request = base.GetWebRequest(address);
request.Timeout = 10;
return request;
}
}
public class TestIt
{
internal static async Task DoTest()
{
try
{
WebClient client = new MyWebClient();
string result = await client.DownloadStringTaskAsync("https://www.google.com");
// sync version works:
// string result = client.DownloadString("https://www.google.com");
Debug.Print(result);
}
catch (Exception ex)
{
Debug.Print(ex.Message);
}
finally
{
Debug.Print("finally");
}
}
}
答案 0 :(得分:0)
来自the docs:
Timeout
属性仅影响通过GetResponse
方法发出的同步请求。要使异步请求超时,请使用Abort
方法。
正如Kevin所提到的,对于现代异步代码,HttpClient
通常是一个更好的选择。 HttpClient
的设计是从头开始考虑异步的。