Groups | Blog | Home
all groups > dotnet web services > february 2008 >

dotnet web services : web serivce: client side timeout?


hzgt9b
2/7/2008 8:01:05 AM
Using VS2005, VB.NET,

BACKGROUND
I have a windows forms application that makes calls to a web service.
All my clients work on project provided laptops (all have exact same
set-up, configuration and software installations). The service is long
running (uploading large files) so to avoid timeouts we set the client
side timeout to be infinite:

Dim objWebService As New org.myCompany.myDomain.myServices
objWebService.Timeout = Timeout.Infinite

The server side timeout is set to have a long timeout window (30
minutes) also.

PROBLEM
Given this setup I would not expect timeouts to be possible from the
client side but only from the server side. But here is an error
message that some (not all) of my clients are getting:

System.Net.WebException: Unable to connect to the remote server ---
> System.Net.Sockets.SocketException: A connection attempt failed
because the connected party did not properly respond after a period of
time, or established connection failed because connected host has
failed to respond
at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot,
SocketAddress socketAddress)
at System.Net.Sockets.Socket.InternalConnect(EndPoint remoteEP)
at System.Net.ServicePoint.ConnectSocketInternal(Boolean
connectFailure, Socket s4, Socket s6, Socket& socket,
IPAddress& address, ConnectSocketState state, IAsyncResult
asyncResult, Int32 timeout, Exception& exception)
--- End of inner exception stack trace ---
at System.Net.HttpWebRequest.GetRequestStream()
at
System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String
methodName, Object[] parameters)
at myApp.org.myCompany.myDomain.myServices.Upload(String,
DateTime , String, String, Object) at myApp.myClass.myMethod()


To me this looks like the client side is not able to reach the web
service and is timing out. Because I control what is installed on the
client machines I can rule out third party conflicts (fire walls, anti-
virus, and such). Why else would I be getting a client side timeout
given my set-up (i.e. web service timeout set to infinite)? If this is
not a client side timeout please correct me! BTW, the web service is
on a secure site (https) and I do set the web service object's
credentials to a properly configured NetworkCredential object. Could
the credentials in my NetworkCredential object expire causing a
timeout (don't think so, just grabbing for straws)?

Any thoughts appreciated.

John Saunders [MVP]
2/7/2008 11:53:36 AM
[quoted text, click to view]

Note that this is a timeout on the connection attempt. Your client-side
timeout is not relevant in this case.

You should consider adding retry code that traps this specific exception and
tries again a certain number of times.
--
--------------------------------------------------------------------------------
John Saunders | MVP - Windows Server System - Connected System Developer

hzgt9b
2/7/2008 2:30:22 PM
On Feb 7, 11:53=A0am, "John Saunders [MVP]" <john.saunders at
[quoted text, click to view]

So whats the difference betweent the connection attempt and the web
hzgt9b
2/7/2008 7:20:24 PM
On Feb 7, 7:35=A0pm, "John Saunders [MVP]" <john.saunders at
[quoted text, click to view]

Thanks for the prompt replyies:
Obvious next question: if I configured the timeout to be infinite then
why would I get a timeout and why is my "...client-side
timeout is not relevant in this case"? I have some retries in the
application, I'm just trying to understand the root cause behind the
John Saunders [MVP]
2/7/2008 7:35:37 PM
[quoted text, click to view]

So whats the difference betweent the connection attempt and the web
service connection?

=======
Before the client can communicate to the server, a TCP/IP connection needs
to be established. It is that process that is timing out in your case.

Once the connection is established, data can be sent and received using the
TCP/IP connection. This is the timeout you configured to be infinite.
--
--------------------------------------------------------------------------------
John Saunders | MVP - Windows Server System - Connected System Developer

John Saunders [MVP]
2/8/2008 6:33:42 AM
[quoted text, click to view]

Thanks for the prompt replyies:
Obvious next question: if I configured the timeout to be infinite then
why would I get a timeout and why is my "...client-side
timeout is not relevant in this case"? I have some retries in the
application, I'm just trying to understand the root cause behind the
(now identified TCP/IP) timeouts...
======
I'm sorry if I wasn't clear.

There are two separate kinds of timeout involved: the connect timeout and
the "transport timeout". You have no control over the connect timeout.
That's the one that timed out for you this time. The "transport timeout" is
the one you're setting to infinite. It only takes effect after a connection
has been established. Since no connection was established in your case, the
"client-side timeout is not relevant".
--
--------------------------------------------------------------------------------
John Saunders | MVP - Windows Server System - Connected System Developer

hzgt9b
2/8/2008 8:47:29 AM
On Feb 8, 6:33=A0am, "John Saunders [MVP]" <john.saunders at
[quoted text, click to view]

Thanks for the clarification.

So then what can cause the "connection" timeout to occur?

I don't see this issue will all my clients (and some have it more
server than others) - this makes me think the connection is not
related to the server but an issue outside of their machine but not
John Saunders [MVP]
2/8/2008 3:36:40 PM
[quoted text, click to view]

Thanks for the clarification.

So then what can cause the "connection" timeout to occur?

I don't see this issue will all my clients (and some have it more
server than others) - this makes me think the connection is not
related to the server but an issue outside of their machine but not
the server.
======
The issue could be anywhere, even on the server. The connection timeout
simply means that the connection did not occur in time. In fact, it could
mean that the connection would never have occurred, no matter how long you
wait. Obviously, this could be caused by anything, from a temporary failure
of a router, to the server being hit by a meteor (somewhat less temporary)!
--
--------------------------------------------------------------------------------
John Saunders | MVP - Windows Server System - Connected System Developer

hzgt9b
2/11/2008 7:58:43 AM
On Feb 8, 3:36=A0pm, "John Saunders [MVP]" <john.saunders at
[quoted text, click to view]

AddThis Social Bookmark Button