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

问题描述 投票:50回答:4

当我在Windows 7 IIS7计算机上进行调试时,在调试过程中出现此错误:

正在使用的Web服务器进程调试已被IIS终止。这可以通过配置来避免IIS中的应用程序池设置。看到帮助以获取更多详细信息。

我在做什么错?

visual-studio windows-7 iis-7
4个回答
92
投票

调试时,IIS将不会处理任何其他请求,除非您完成单步执行代码。这包括IIS发送给自己的“ ping”请求。由于IIS没有收到自己的回音,因此它决定关闭自身,这将立即终止调试。

解决方案是将应用程序池设置中的Ping最大响应时间从其默认值90秒增加。将其设置为足够高的水平,这将给您足够的时间来调试代码(例如大约300秒)。

Microsoft有冗长的文章here


编辑:其他人建议将“已启用Ping”设置为false。我宁愿以较大的间隔将其保留在原处,原因有几个,但最重要的是(很可能)在生产中启用了工人处理ping,因此您应该努力在配置下进行开发和调试尽可能接近生产。如果未在生产中启用ping,则也一定要在本地禁用ping。



2
投票

IIS具有运行状况检查功能,该功能会定期检查以查看IIS工作进程是否已挂起或无法使用。如果工作进程在调试器中停止,则从IIS的角度来看它看起来是不正常的,IIS会终止它并启动一个新进程。

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

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


0
投票

如果您运行并配置了Microsoft的scom,并且在您的工作位置进行了配置(假设这不是一个有趣的项目),并且能够为其创建管理包或认识某人,这可能会帮助您查明是什么原因导致了问题。我意识到这是一个漫长的过程,但是如果确实能描述您的情况,那将是在找不到其他解决方案的情况下我会做的。

© www.soinside.com 2019 - 2024. All rights reserved.