Eu tenho um servidor IIS com um único pool de aplicativos e um site que contém três aplicativos. Todos os três aplicativos são executados em um único trabalhador do IIS.
Às vezes, ao depurar um dos aplicativos, o depurador entra intermitentemente em um estado em que está avaliando 'algo' para sempre. Isso pode acontecer a qualquer momento enquanto a execução é pausada, mesmo que eu não esteja depurando ativamente.
Quando isso acontece, todo o aplicativo ASP.NET que eu estava depurando se torna inutilizável. Se eu fizer uma requisição para o aplicativo 'dead', eu posso ver o ASP.NET carregando os binários necessários para servir a requisição, mas ele não entra no código e não responde ao meu pedido, nem nunca feche a conexão usada para fazer a solicitação.
No entanto, os outros dois aplicativos neste worker continuam sendo executados e as solicitações do servidor são esperadas.
Tanto quanto eu posso dizer, não há maneira de recuperar o aplicativo, curto de reiniciar minha máquina. Reiniciar o IIS, reciclar o pool de aplicativos e matar o funcionário não tem efeito.
Por que isso acontece? Como posso recuperar o aplicativo ASP.NET sem reiniciar minha máquina?
Observe que estou usando exclusivamente o termo 'aplicativo' para fazer referência a um aplicativo do IIS.