【发布时间】:2016-07-12 22:54:17
【问题描述】:
根据 MSDN,默认 WebRequest 超时为 100 秒(100,000 毫秒)。 这是否意味着将 Timeout 设置为 0(零)会立即使请求超时?
如果是这样,你什么时候想做这样的事情?
【问题讨论】:
标签: c# timeout httpwebrequest
根据 MSDN,默认 WebRequest 超时为 100 秒(100,000 毫秒)。 这是否意味着将 Timeout 设置为 0(零)会立即使请求超时?
如果是这样,你什么时候想做这样的事情?
【问题讨论】:
标签: c# timeout httpwebrequest
是的,它会立即超时,您可以自己轻松测试:
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;
}
}
}
【讨论】: