现在我正在使用HttpWebRequest.BeginGetResponse
方法进行http调用,我想将代码迁移到异步等待模型。因此,尽管使用了WebClient.DownloadStringTaskAsync
方法,但不确定如何设置超时时间?
答案 0 :(得分:1)
WebClient
的默认超时为100秒(我相信)
如果您愿意,CancelAsync()
可以自己设置超时时间,则加入胡椒粉和盐调味。
您使用HttpWebRequest
而不是WebClient
(内部使用HttpWebRequest
)。使用HttpWebRequest
将允许您隐式设置超时。
您可以制作一个派生类,该类设置WebRequest
的超时时间,如从此答案中看到的那样
Set timeout for webClient.DownloadFile()
public class WebDownload : WebClient
{
/// <summary>
/// Time in milliseconds
/// </summary>
public int Timeout { get; set; }
public WebDownload() : this(60000) { }
public WebDownload(int timeout)
{
this.Timeout = timeout;
}
protected override WebRequest GetWebRequest(Uri address)
{
var request = base.GetWebRequest(address);
if (request != null)
{
request.Timeout = this.Timeout;
}
return request;
}
}