System.WebException | The operation has timed out

G

Guest

We use HttpWebRequest to send the request at a URL. But some times the method
GetResponse throws a time out exception.

But when we check the IIS logs, there is no such entry. So the request never
reached the server but the client is getting a time out exception.

What could be the possible reasons? Confirmed that the request does not get
lost in the network.
 
W

William F. Robertson, Jr.

Set the KeepAlive property of the HttpWebRequest object to false.

When this is set to true, default, it will keep the connection open to your
server. After a couple uses, the connection will timeout from the server,
so the next time you make a request to it, it will try to use the "pooled"
connection, but that pooled connection has timed out, thus you are receiving
the error.

private static string GetResponseString( string url )
{
HttpWebRequest request = ( HttpWebRequest ) WebRequest.Create( url );
request.KeepAlive = false;
using ( HttpWebResponse response = ( HttpWebResponse )
request.GetResponse() )
{
using ( StreamReader reader = new StreamReader(
response.GetResponseStream() ) )
{
return reader.ReadToEnd();
}
}
}

HTH,

bill
 
G

Guest

Thanks.

But I fail to understand one thing. Does that mean that .NET does not have a
clena support for keep alives? Do you mean that if I ever use keep alives in
ASPNET I will always get intermittent timeouts?

Is there any patch available?

Regards,
SAchin
 
W

William F. Robertson, Jr.

No, I believe the support is there. KeepAlive = true will instruct the
webserver to keep a persistent connection open. You are timing out because
the webserver has timed out the KeepAlive session, but you, the client, has
not.

When I experienced this problem, it was because I was making a hit to a
webserver, then intermittedly making hits every second to an interval of 1
hour. The first couple connections always worked, then they would start
timing out, especially near the end of the day when the frequency of hits
decreased.

When I was testing and hitting the server every 5 seconds or so, I never
received the timeout error. It was only in a production environment.

If you don't feel comfortable setting the KeepAlive to false, then perhaps
make you HttpWebRequest every couple seconds, then you might not experience
this problem.

I don't believe there is a patch, this is the behavior I would expect.

HTH,

bill
 
G

Guest

Yes, it is webserver that has timed out. But the error I am receiving is at
the client side.

When web server times out, the error received by the client is "The
underlying connection is closed. Unexpected error occured on receive"

But when client times out, the error received is "The operation has timed
out".

SO it is client that is timing out and intermittently. Please let me know if
I am correct.

And, I receive the error exactly after 60 seconds.
 
W

William F. Robertson, Jr.

I was thinking something else entirely different.

Setting KeepAlive to false did not help resolve any of the timeouts?

When your client is making a HttpWebRequest to the server. You receive one
of two timeouts?

Either the Server bombs with "Underlying connection closed."
Or the Client bombs with "The operation has timed out"

The only thing left I could possibly help you with is for you to post your
code and I will look at it and see if there is anything squirrelly

bill
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,968
Messages
2,570,153
Members
46,701
Latest member
XavierQ83

Latest Threads

Top