为什么debugging在IIS7中保持超时?
当我在Windows 7 IIS7机器上进行debugging时,在debugging期间出现此错误:
正在debugging的Web服务器进程已被IIS终止。 这可以通过在IIS中configuration应用程序池设置来避免。 请参阅帮助了解更多详情。
我究竟做错了什么?
死图像链接
当您正在debugging时,IIS将不会服务任何其他请求,直到您完成您的代码。 这包括IIS发送给自己的“ping”请求。 由于IIS本身没有收到任何回应,它决定closures自己,这会立即终止您的debugging。
解决方法是将应用程序池设置中的Ping最大响应时间从默认值90秒增加到最大值 。 将它设置得足够高,这将给你足够的时间来debugging你的代码(如可能300秒)。
微软在这里写了一篇长篇大论,或者你可以看看漂亮的图片。
–
编辑:其他人build议将“启用Ping”设置为false。 有几个原因,我宁愿保留它,只是间隔较长,但最重要的是,你将(很可能)有工人处理ping生产启用,你应该努力开发和debugging下一个configuration尽可能接近生产。 如果您没有在生产环境中启用ping,那么通过所有方法也可以在本地禁用它。
您的应用程序池 – >高级设置 – > Ping启用为False
IIS具有健康检查function,该function会定期检查IIS工作进程是否挂起或不可用。 如果一个工作进程在debugging器中停止,从IIS的angular度来看,它看起来不健康,IIS会杀死它并激活一个新的进程。
要改变这种行为(在您的开发工作站上,不要在生产环境中禁用此function),请转至IISpipe理工具,在左窗格中select“应用程序池”节点,然后右键单击应用程序池居住,并select“高级设置”。 从那里,在“stream程模型”部分,将“启用Ping”设置为False。 您可能还希望将空闲超时设置为非常大的数字。
有关此问题的更多讨论和截图,请参阅此IIS.NET文章 。 有关如何通过pipe理工具之外的代码/脚本设置这些设置,请参阅此TechNet文章 。
如果你有微软公司的scom运行和configuration在你工作的地方(假设这不是一个有趣的项目),你可以为它创build一个pipe理包,或者知道某个人是谁,这可以帮助你找出造成问题的原因。 我意识到这是一个很长的一步,但如果这样做描述你的情况下,我会做,如果没有其他解决scheme被发现。
- 当我设置IIS池的LoadUserProfile时究竟发生了什么?
- 远程主机closures了连接。 错误代码是0x800704CD
- 请求redirect到/ Account / Login?ReturnUrl =%2f,因为MVC 3安装在服务器上
- IISredirect保留QueryString?
- 在Asp.net中设置默认页面
- ASP.NET Web Garden – 我需要多less个工作进程?
- 在IIS7中DefaultAppPool和Classic .NET AppPool有什么区别?
- IIS7部署 – 重复“system.web.extensions / scripting / scriptResourceHandler”部分
- 启用IIS7 gzip