小编典典

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

all

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

这是我的代码:

WebClient webClient = new WebClient();

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

有没有办法在这个对象上设置无限超时?或者,如果没有,任何人都可以帮我举一个替代方法的例子吗?

该 URL 在浏览器中运行良好 - 只需大约 3 分钟即可显示。


阅读 66

收藏
2022-05-24

共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;
    }
}
2022-05-24