c# HttpWebRequest 超时设置为零

标签 c# timeout httpwebrequest

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

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

最佳答案

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

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

关于c# HttpWebRequest 超时设置为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38340099/

相关文章:

c# - 如果更改 Thread.CurrentThread.CurrentCulture,则 HttpWebRequest 超时

c# - 属性绑定(bind)没有响应

c# - 在最小起订量中重置模拟验证?

c++ - Boost::asio socket - 如何在 'throw' 中创建 read_some "timeout"?

java - Java 中的 HTTP Json 请求?

c# - 通过HttpWebRequest C#将多个远程文件复制到另一个远程文件

c# - Tango/Unity - UI 不会阻止屏幕上的触摸

c# - 按值传递和按引用传递

tcp 连接超时(unix/windows 便携)

automated-tests - option.timeout 忽略等待 Selector.withAttribute