I have an IIS server with a single app pool, and a site that contains three applications. All three applications are run in a single IIS worker.
Sometimes, while debugging one of the applications, the debugger intermittently enters a state where it's evaluating 'something' forever. This can happen any time while execution is paused, even if I'm not actively debugging.
When this happens, the entire ASP.NET application that I was debugging becomes unusable. If I make a request to the 'dead' application, I can see ASP.NET loading the binaries needed to serve the request, but it doesn't enter any of my code and doesn't respond to my request, nor does it ever close the connection used to make the request.
However, the other two applications in this worker continue to run and server requests as expected.
As far as I can tell, there is no way to recover the application, short of restarting my machine. Restarting IIS, recycling the app pool, and killing the worker all have no effect.
Why does this happen? How can I recover the ASP.NET application, without restarting my machine?
Note that I'm exclusively using the term 'application' to refer to an IIS application.