如果我执行此操作并在它旁边运行Fiddler并为请求设置断点以使其超时..为什么它不会像它应该超时? (我用等待)
如果我将代码更改为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");
}
}
}
来自the docs:
Timeout
属性仅影响使用GetResponse
方法进行的同步请求。要使异步请求超时,请使用Abort
方法。
正如Kevin所说,对于现代异步代码,HttpClient
通常是更好的选择。 HttpClient
是从头开始设计的,同时考虑到异步。