Debugger une application en moins de 90 secondes – Comment autoriser IIS à être debuggé plus de 90 sec ?
Dans certains cas, nous devons développer notre site directement avec IIS et non cassini : le mini serveur web de Visual Studio.
Lorsque l’on debug notre site hébergé sous IIS avec Visual Studio, au bout de 90 secondes on est comme déconnecté, Visual Studio arrête le debug. Dans certains cas nous disposons d’un message d’erreur, dans d’autres non, Visual Studio arrête le Debug sans aucun avertissement, comme si l’application avait été tuée.
Voici le message d’erreur que l’on obtient de temps à autre :
The web server process that was being debugged has been terminated by Internet Information Services (IIS). This can be avoided by configuring Application Pool ping settings in IIS. See help for further details.
Ce phénomène provient du "ping” de IIS.
Mais qu’est-ce que le “ping” ?
A partir de IIS6, IIS a la possibilité de relancer le worker process si celui-ci ne répond pas au bout d’un certain intervalle. Pour cela IIS va envoyer un ping au worker process afin de vérifier qu’il est toujours en vie. Par défaut l’intervalle entre 2 pings est de 30 secondes, si au bout de 1 minute et 30 secondes, le worker process est recyclé.
C’est cette fonctionnalité qui pose problème lorsque l’on debug, en effet lorsque l’on debug, le debuggeur met en pause le worker process, celui ci ne peut donc plus répondre aux pings.
Pour désactiver les pings sur votre machine de développement ou modifier la durée de ce timeout, il faut aller dans les propriétés avancées du pool d’application du site web.

Vous pouvez également modifier ces paramètres via le fichier de config "C:\Windows\System32\inetsrv\config\applicationHost.config" (IIS 7.0: processModel Element for applicationPoolDefaults for applicationPools (IIS Settings Schema)
<system.applicationHost>
<applicationPools>
<add name="MutualAuth">
<processModel pingingEnabled="false"
pingInterval="00:00:30" pingResponseTime="00:01:30" />
</add>
</applicationPools>
<system.applicationHost>
Pour les plus courageux, voici la ligne de commande :
C:\Windows\System32\inetsrv>appcmd set apppool DefaultAppPool -processModel.pingingEnabled:false
Pour en savoir sur plus sur la fonctionnalité de ping de IIS : Configure Application Pool Health