I've got a .net web site which runs on IIS. Once every few days I look at the task manager and I've got 10-15 vsjitdebugger.exe processes open. Each one ties up some connections so it causes problems with the db pool unless I manually go in and end the process.
At one point, Visual Studio was installed on this box, though it's since been uninstalled. I'm wondering if this is the reason the debugger tries to start when an error occurs.
However, what I want to know is how do I get IIS to stop attempting to launch the debugger when an error happens? Is there anyway that it can simply go on with life without trying to debug?
I also wonder, could the way the app is deployed (as a debugged app with the PDB's instead of a release version) make a difference? Or even having debugging turned on in the web.config?
It sounds like the machine is configured to automatically run the debugger if an unhandled exception occurs in the process. You don't want this in a production server but instead likely want it to terminate the process. This behavior is controlled by the DbgManagedDebugger key in the registry. Here is the documentation for that key
- http://msdn.microsoft.com/en-us/library/2ac5yxx6.aspx
It could be that you still have the debugger regkeys set. Can you check the value of your HKLM\Software\Microsoft\Windows NT\CurrentVersion\AEDebuger\Debugger and the HKLM\Software\Microsoft.NETFramework\DbgManagedDebugger keys. These are the keys that the OS looks at when an unhandled exception occurs (it will launch whatever these keys are set to).
Sometimes a developer puts in a line of code to Debugger.Launch() and forgets to remove it. That will force the JIT dialog to say, "An exception 'Launch for user' has occurred ...". If you are getting that message then it's a hardcoded statement to launch the debugger.