繁体   English   中英

WebClient 超时错误

[英]WebClient timeout error

我创建了一个 class,如下所示。

public class WebDownload : WebClient
{
    private int _timeout;
    /// <summary>
    /// Time in milliseconds
    /// </summary>
    public int Timeout
    {
        get
        {
            return _timeout;
        }
        set
        {
            _timeout = value;
        }
    }

    public WebDownload()
    {
        this._timeout = -1;
    }

    protected override WebRequest GetWebRequest(Uri address)
    {
        WebRequest result = base.GetWebRequest(address);
        result.Timeout = this._timeout;
        return result;
    }
}

当我创建这个 class 的 object 时,它会创建一个 Web 客户端 object 并将timeout设置为 -1,以便它无限等待响应。

但即使在我将timeout设置为 -1 后,它也会导致超时错误。

有解决方案吗?

我知道你从哪里得到-1部分,但是在关于Timeout的 MSDN 文章中,它说如果出现以下情况,它将抛出ArgumentOutOfRangeException

指定的值小于零并且不是无限的。

默认值为100,000 毫秒(100 秒)。

还有一件事要考虑:

若要指定在读取或写入操作超时之前等待的时间量,请使用ReadWriteTimeout属性。

域名系统 (DNS) 查询最多可能需要15 秒才能返回或超时。 如果您的请求包含需要解析的主机名,并且您将 Timeout 设置为小于 15 秒的值,则可能需要 15 秒或更长时间才能引发 WebException 以指示您的请求超时。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM