When I try the following code:
var request = (HttpWebRequest)HttpWebRequest.Create(url);
request.Timeout = 3; // a small value
var response = request.GetResponse();
Console.WriteLine(response.ContentLength);
for a URL that I know it is going to take more than 3 millisecond to load (I put a Thread.Sleep(110000)
in Application_BeginRequest
) it works fine and throws a WebException
as expected.
Problem is when I switch to async method:
var response = request.GetResponseAsync().Result;
or
var response = await request.GetResponseAsync();
This async version completely ignores any Timeout value, including ReadWriteTimeout
and ServicePoint.MaxIdleTime
I couldn't find anything about Timeout in MSDN's GetResponseAsync()
now I'm wondering if it is a bug in GetResponseAsync()
or something is wrong in the way I use async here?