Groups | Blog | Home
all groups > dotnet web services > december 2004 >

dotnet web services : restart webservice


kenneth fleckenstein nielsen
12/27/2004 2:14:24 AM
hi guru's
I want to restart my webservice when ever it throws an exception that isn't
Christoph Schittko [MVP]
12/27/2004 9:34:16 AM
What exactly do you mean when you say restart? You always get a new
instance of your web service class for every new incoming request. Why
do you want to restart the service?

You would have to restart the ASP.Net or the IIS worker process which
would affect the availability of your web service and potentially other
web applications on that serve.

Also you would need to run undo an account with administrator
privileges. Is that really something you want to do?

HTH,
Christoph Schittko
MVP XML
http://weblogs.asp.net/cschittko

[quoted text, click to view]
kenneth fleckenstein nielsen
12/28/2004 1:09:02 AM
I want to restart, because that is my best guess, When i get an exception
thrown it is from the db I'm connecting to and I think i should kill the db
connection, because the db ties up licenses. When it happens during debug I
kill the aspnet_wp.exe process and all the licenses are released.

[quoted text, click to view]
kenneth fleckenstein nielsen
12/28/2004 5:35:06 AM
I've just been looking around the user on my computer, ASPNET is appearently
only used for running the aspnet_wp process, and i could set appearently set
som times to shorter than ever on my iss's properties.
Which i guess will end the session and close the application and retarting
it again. ( and herby freeing licenses)

[quoted text, click to view]
Christoph Schittko [MVP]
12/28/2004 10:39:50 AM
It sounds like you are storing database connections (or objects that
hold open database connections) in the session state? If that's the case
you need to design your application to eliminate the root cause of your
problems instead of addressing the symptom by killing the worker
process.

You __have to__ follow the recommended usage for database connections,
i.e. call open as late as possible, execute your SQL and close/dispose
the connection. Otherwise you will see the problems you're reporting.

Killing the worker process will kill all sessions for all web
applications running in that instance. You can never be sure that you
are not impacting other users of other applications when you just kill
the process.

HTH,
Christoph Schittko
MVP XML
http://weblogs.asp.net/cschittko


[quoted text, click to view]
kenneth fleckenstein nielsen
12/29/2004 12:35:04 AM
hmm, I developing in c# & .net, and open the session in the 'global' class
generated when you create a new webservice project. I open in thefunction:
protected void Session_Start(Object sender, EventArgs e)
- you state that i should do it much later ? and that way can control the
licens use better. And catch exceptions thrown by the db better, and wont
have to force the app to restart.

[quoted text, click to view]
kenneth fleckenstein nielsen
12/29/2004 4:37:02 AM
It would be nice just to restart the httpApp that the service derive from.
But it doesn't seam to have an end/exit function to call.

[quoted text, click to view]
Christoph Schittko [MVP]
12/29/2004 11:38:38 AM
That's not what you asked for initially ...

It's doable, by unloading the app domain that the application is running
in, but I'm not sure if the account that's doing that requires special
privileged.

Either way, you're much better off changing the design of your
application.

HTH,
Christoph Schittko
MVP XML
http://weblogs.asp.net/cschittko

[quoted text, click to view]
Christoph Schittko [MVP]
12/29/2004 11:44:06 AM
You are correct. Open the connection just when you need to execute a
database command and then close it as soon as you're done. That way you
don't tie up database connections (licenses) and ensure that database
connection can be pooled.

That should avoid your exceptions altogether (or at least rule out one
possible cause ;) ).

HTH,
Christoph Schittko
MVP XML
http://weblogs.asp.net/cschittko


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