为什么调试会在IIS7中保持超时?

时间:2009-09-14 13:36:09

标签: visual-studio windows-7 iis-7

当我在Windows 7 IIS7计算机上进行调试时,我在调试期间收到此错误:

  

正在进行的Web服务器进程   IIS已终止已调试。   这可以通过配置来避免   IIS中的应用程序池设置。看到   帮助了解更多细节。

我做错了什么?

4 个答案:

答案 0 :(得分:92)

  

Dead image link

在进行调试时,在完成代码处理之前,IIS不会为任何其他请求提供服务。这包括IIS发送给自己的“ping”请求。由于IIS没有收到回复信息,因此决定自行关闭,这会立即终止调试。

解决方案是将应用程序池设置中的 Ping最长响应时间从默认值90秒增加。将它设置为足够高的值,可以给你足够的时间来调试你的代码(比如300秒)。

微软有一篇冗长的文章here,或者你可以看一下漂亮的图片。

-

编辑:其他人建议将“Ping Enabled”设置为false。有几个原因可以解释为什么我希望将它保持在适当的位置,只需要更大的间隔,但最重要的是你将(最有可能)在生产时启用工作程序处理ping,并且你应该努力在配置下进行开发和调试这是尽可能接近生产。如果您没有在生产中启用ping,那么一定要在本地禁用它。

答案 1 :(得分:15)

答案 2 :(得分:2)

IIS具有运行状况检查功能,可定期检查IIS工作进程是挂起还是不可用。如果在调试器中停止了一个工作进程,从IIS的角度来看它看起来很不健康,并且IIS会杀死它并启动一个新进程。

要更改此行为(在开发工作站上 - 不想在生产中禁用它!)转到IIS管理工具,在左窗格中选择“应用程序池”节点,然后右键单击应用程序池您的应用所在,并选择“高级设置”。从那里,在“过程模型”部分中,将“Ping Enabled”设置为False。您可能还希望将空闲超时设置为非常大的数字。

有关此问题的详细讨论和屏幕截图,请参阅this IIS.NET article。有关如何通过管理工具外部的代码/脚本设置这些设置,请参阅this TechNet article

答案 3 :(得分:0)

如果你有微软的scom运行并配置你工作的地方(假设这不是一个有趣的项目),你可以为它创建一个管理包或知道某人是谁,这可以帮助你找出导致的原因问题。我意识到它是一个很长的镜头,但如果这确实描述了你的场景,那么如果没有找到其他解决方案,我将会这样做。