【发布时间】:2023-04-04 01:20:02
【问题描述】:
当我在我的 Windows 7 IIS7 机器上调试时,我在调试过程中收到此错误:
正在运行的 Web 服务器进程 debugged 已被 IIS 终止。 这可以通过配置来避免 IIS 中的应用程序池设置。看 帮助了解更多详情。
我做错了什么?
【问题讨论】:
标签: visual-studio windows-7 iis-7
当我在我的 Windows 7 IIS7 机器上调试时,我在调试过程中收到此错误:
正在运行的 Web 服务器进程 debugged 已被 IIS 终止。 这可以通过配置来避免 IIS 中的应用程序池设置。看 帮助了解更多详情。
我做错了什么?
【问题讨论】:
标签: visual-studio windows-7 iis-7
在您调试时,IIS 不会为任何其他请求提供服务,直到您完成单步调试代码。这包括 IIS 发送给自身的“ping”请求。由于 IIS 没有收到自己的回复,它决定关闭自己,这会立即终止您的调试。
解决方案是将应用程序池设置中的 Ping 最大响应时间从其默认值 90 秒增加。将其设置为足够高的值,以便您有足够的时间来调试代码(例如 300 秒)。
微软有一篇冗长的文章here。
编辑:其他人建议将“Ping Enabled”设置为 false。有几个原因我更喜欢保留它,只是间隔更大,但最重要的是您将(很可能)在生产中启用工作进程处理 ping,并且您应该努力在配置下开发和调试即尽可能接近生产。如果您没有在生产环境中启用 ping,那么也一定要在本地禁用它。
【讨论】:
如果您运行并配置了 microsoft 的 scom(假设这不是一个有趣的项目),并且您能够为其创建一个管理包或认识某个人,这可能有助于您查明是什么原因造成的问题。我意识到这是一个长镜头,但如果这确实描述了您的场景,那么如果没有找到其他解决方案,我会这样做。
【讨论】:
IIS 具有健康检查功能,可定期检查 IIS 工作进程是否挂起或无法使用。如果工作进程在调试器中停止,从 IIS 的角度来看,它看起来不健康,IIS 会杀死它并启动一个新进程。
要更改此行为(在您的开发工作站上——不想在生产中禁用它!)转到 IIS 管理工具,在左窗格中选择应用程序池节点,然后右键单击应用程序池您的应用程序所在的位置,然后选择“高级设置”。从那里,在“流程模型”部分中,将“Ping Enabled”设置为 False。您可能还希望将空闲超时设置为一个非常大的数字。
有关此问题的更多讨论和屏幕截图,请参阅 this IIS.NET article。请参阅this TechNet article,了解如何通过管理工具之外的代码/脚本设置这些设置。
【讨论】:
您的应用程序池 -> 高级设置 -> Ping 启用为 False
【讨论】: