WebClient超时错误

时间:2011-06-07 08:29:24

标签: c# webclient

我创建了一个类如下。

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;
    }
}

当我创建此类的对象时,它会创建一个webclient对象并将timeout设置为-1,以便它等待无限时间响应。

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

有解决方法吗?

1 个答案:

答案 0 :(得分:3)

我知道你从哪里获得了-1部分,但是在关于Timeout的MSDN文章中,它说它会抛出ArgumentOutOfRangeException if:

  

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

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

还有一件事需要考虑:

  

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

     

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