IIS monitors the worker processes health by sending a periodic request the worker processes. This pinging is to ensure that if the worker processes responding the incoming requests in timely manner. If the worker process does not respond in a timely manner, IIS terminates the process after a specific number of ping. Now, consider you are debugging your web application by attaching w3wp.exe from Visual Studio. During debugging, it might take a long to find out result of debugging and as an out come, execution is on hold as you are pausing around with some breakpoints or playing around the code.
In between your debugging, IIS sending a ping to check worker process health and found it’s not responding, as you are holding the execution around breakpoint or other operation with in visual studio. Resulting of that, IIS terminates the process and you will get error message “The web server process that was being debugged has been terminated by Internet Information Services” .
Now think about it, you are middle of a debugging session and the worker process process terminates. This will stop your entire debugging. This is quite frustrating and irritating when you are in a middle of debugging and debugger terminates because of the worker process.
Here is the solution:
Open the application pool from IIS Manager and navigate to “Advanced Settings” from the context menu of selected application pool.
This will open “Advanced settings” dialog window. Move to “Process Model” section
By default, you will find,
Ping Enabled = True with Ping Maximum Response Time = 90s and Ping Period = 30s
If worker process responding with in the specified time frame, IIS will keep the worker process alive. But considering the debugging time, the maximum response time is very less.
What you can do over here is, increase the Ping Maximum Response Time with some values which can ensure worker process will get a response in between health check.
Or, Disable the Pinging by Ping Enabled = False . By this setting IIS will stop pining your worker process for health checkup.
Note : This is recommended only for your development environment. Don’t disable it on Test, staging or Production environments. Worker process health monitoring, terminating processes when there is no timely request are very crucial for application performance.
Happy Debugging !
Check this out if you need some more information on IIS : IIS Articles Archives
Hope this helps !