【问题标题】:c# HttpWebRequest Timeout setting to zeroc# HttpWebRequest 超时设置为零
【发布时间】:2016-07-12 22:54:17
【问题描述】:

根据 MSDN,默认 WebRequest 超时为 100 秒(100,000 毫秒)。 这是否意味着将 Timeout 设置为 0(零)会立即使请求超时?

如果是这样,你什么时候想做这样的事情?

【问题讨论】:

    标签: c# timeout httpwebrequest


    【解决方案1】:

    是的,它会立即超时,您可以自己轻松测试:

    try
    {
        WebRequest myWebRequest = WebRequest.Create("http://stackoverflow.com/questions/38340099/c-sharp-httpwebrequest-timeout-setting-to-zero");
        myWebRequest.Timeout = 0;
        WebResponse myWebResponse = myWebRequest.GetResponse();
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message); // timeout exceeded
    }
    

    为什么?我也这样问过自己。也许出于测试目的,或者如果您需要一个显然不会意外工作的默认值,以确保在任何情况下都将设置该属性。

    有趣的是,除 -1 之外不允许使用负值,因为那是 System.Threading.Timeout.Infinite 的值。 Here's the source:

    public override int Timeout {
        get {
            return _Timeout;
        }
        set {
            if (value<0 && value!=System.Threading.Timeout.Infinite) {
                throw new ArgumentOutOfRangeException("value", SR.GetString(SR.net_io_timeout_use_ge_zero));
            }
            if (_Timeout != value)
            {
                _Timeout = value;
                _TimerQueue = null;
            }
        }
    }
    

    【讨论】:

    • 非常感谢蒂姆!
    猜你喜欢
    • 2020-06-10
    • 1970-01-01
    • 1970-01-01
    • 2010-09-28
    • 1970-01-01
    • 2019-03-27
    • 1970-01-01
    • 2016-10-18
    • 2011-03-21
    相关资源
    最近更新 更多