all groups > dotnet web services enhancements > september 2006 >
You're in the

dotnet web services enhancements

group:

WSE 3 + Long Running Request = Timeout


WSE 3 + Long Running Request = Timeout James Hancock
9/4/2006 8:26:44 PM
dotnet web services enhancements:
I have a request that could take up to 5-10 minutes to process on the server
side. There's no way around it, and believe me if there was a way to avoid
this, I would be very happy indeed, but there isn't. (and normally this will
take a couple of seconds but if the person hasn't used the web service in
quite a while it could take a very long while (data base size related)).

Anyhow, when I run the request it runs for about 5 mintues and then times
out on the client side. It appears to still be running on the server side,
at least the wp3 process is still going nuts like it's doing it's work.

On start of the Service when I create it I set the Timeout = Int32.MaxValue.

I've tried -1 and it doesn't matter. 0 just errors.

I've set on the server side the HTTP requestTimeout = 3600 (1 hour) and it
doesn't matter.

How do I get the client to wait longer before timing out? (I get the "server
focibly closed the connection..." as the internal error and it's on the
reponse that it's erroring which leads me to believe that it's something in
my config on the server not the client, but...)

Thanks!

James Hancock
Re: WSE 3 + Long Running Request = Timeout Pablo Cibraro [MVP]
9/5/2006 11:02:26 AM
Hi James,

Did you use the <serviceProxy class>.Timeout property to set a higher
timeout ?.

<serviceProxy class> is the name of your service proxy class.

Regards,
Pablo Cibraro.

[quoted text, click to view]

Re: WSE 3 + Long Running Request = Timeout James Hancock
9/5/2006 11:43:19 AM
How do I do that? (I feel stupid now...)

BTW, I should mention that I'm using SecureConversation as well.

Thanks for your help!

James Hancock

[quoted text, click to view]
Re: WSE 3 + Long Running Request = Timeout Pablo Cibraro [MVP]
9/5/2006 1:12:59 PM
The proxy class automatically generated by VS or the wsewsdl3.exe tool has
a property "Timeout". You can use it to set a higher timeout.

Regards,
Pablo.

[quoted text, click to view]

Re: WSE 3 + Long Running Request = Timeout James Hancock
9/5/2006 8:10:16 PM
Ok, I've definately set that (int32.maxvalue and tried -1) and it still is
timing out on receive. Any other ideas?

[quoted text, click to view]
Re: WSE 3 + Long Running Request = Timeout James Hancock
9/6/2006 11:34:47 AM
BTW, I should mention that this appears to only happen on Windows 2003
servers.

[quoted text, click to view]
Re: WSE 3 + Long Running Request = Timeout James Hancock
9/8/2006 9:29:42 AM
*PING*
Anyone have any ideas?

Only happens on Windows 2k3 servers too..

[quoted text, click to view]
Re: WSE 3 + Long Running Request = Timeout Tim_Mac
9/11/2006 7:15:41 PM
hi James,
this may not be the answer your looking for but it is quite a fundamental
problem you face so some lateral thinking may be in order.

how about you make the users aware of the fact that they may have to wait up
to 10 minutes if they haven't logged in for a long time. here is what i
might do:

run the web method synchronously as normal, but the server starts the
processing on a new thread and returns a GUID corresponding to the job ID
for the client. you could maintain the list of current jobs in a static
hashtable on the server (or thread pool or backgroundworker objects etc) and
remove them from the list when they are complete. you could also store
error / status information in the hashtable. the server might even be able
to estimate how long the job will take based on whatever is in the database,
and then you could return this information with the initial web method call
to the client.

your client invokes the web method, get the job ID back straight away, and
then polls the server at intervals with the job ID until it is complete.
it sounds like the timeout problem is on the client side rather than the
server side so this approach should overcome that. i hope this suggestion
helps.

tim mackey.



[quoted text, click to view]

RE: WSE 3 + Long Running Request = Timeout Robert Weber
9/13/2006 7:20:02 AM
Hello James,

you may try to set another setting in you web.config (or machine.config)
file: <executionTimeout> below the <httpRuntime> element. You can set the
maximum number of seconds your request processing is allowed to run on the
server. As your problem is related to long execution time on the server this
may be an answer.

Robert

[quoted text, click to view]
AddThis Social Bookmark Button