7

According to MSDN, default WebRequest timeout is 100 seconds (100,000 ms). Will that mean that setting Timeout to 0 (zero) will timeout request immediatelly?

If so, when would you want to do something like that?

1 Answer 1

7

Yes, it will timout immediately, you can test it yourself easily:

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
}

Why? I've asked myself the same. Maybe for testing purposes or if you need a default value that clearly doesn't work accidentially to ensure that the property will be set in any case.

Interestingly negative values aren't allowed apart from -1, since that is the value of 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;
        }
    }
}
Sign up to request clarification or add additional context in comments.

1 Comment

Much appreciated Tim!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.