一尘不染

如何更改.NET WebClient对象上的超时

c#

我正在尝试(以编程方式)将客户端的数据下载到本地计算机,并且他们的Web服务器非常非常慢,这导致我的WebClient对象超时。

这是我的代码:

WebClient webClient = new WebClient();

webClient.Encoding = Encoding.UTF8;
webClient.DownloadFile(downloadUrl, downloadFile);

有没有办法对此对象设置无限超时?还是如果没有人能帮我举一个替代方法的例子?

该URL在浏览器中可以正常工作-仅显示3分钟即可显示。


阅读 262

收藏
2020-05-19

共1个答案

一尘不染

您可以延长超时时间:继承原始的WebClient类并重写webrequest getter来设置自己的超时时间,如以下示例所示。

在我的案例中,MyWebClient是一个私有类:

private class MyWebClient : WebClient
{
    protected override WebRequest GetWebRequest(Uri uri)
    {
        WebRequest w = base.GetWebRequest(uri);
        w.Timeout = 20 * 60 * 1000;
        return w;
    }
}
2020-05-19