【问题标题】:Why does debugging keep timing out in IIS7?为什么在 IIS7 中调试会一直超时?
【发布时间】:2023-04-04 01:20:02
【问题描述】:

当我在我的 Windows 7 IIS7 机器上调试时,我在调试过程中收到此错误:

正在运行的 Web 服务器进程 debugged 已被 IIS 终止。 这可以通过配置来避免 IIS 中的应用程序池设置。看 帮助了解更多详情。

我做错了什么?

【问题讨论】:

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


    【解决方案1】:

    在您调试时,IIS 不会为任何其他请求提供服务,直到您完成单步调试代码。这包括 IIS 发送给自身的“ping”请求。由于 IIS 没有收到自己的回复,它决定关闭自己,这会立即终止您的调试。

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

    微软有一篇冗长的文章here


    编辑:其他人建议将“Ping Enabled”设置为 false。有几个原因我更喜欢保留它,只是间隔更大,但最重要的是您将(很可能)在生产中启用工作进程处理 ping,并且您应该努力在配置下开发和调试即尽可能接近生产。如果您没有在生产环境中启用 ping,那么也一定要在本地禁用它。

    【讨论】:

    • 你为什么不直接使用它上面的设置来完全禁用 ping?
    • @Paul Betts:因为您希望尽可能地反映生产。当您真正需要的是增加 ping 间隔时,完全禁用 ping 有点苛刻。
    • 谁能告诉我这个问题是否也适用于未调试的长时间运行的脚本,或者运行长时间运行的脚本的线程/进程是否仍能响应 ping?
    • @Rich 这仅适用于调试,当调试器正在等待人类单步执行代码时。
    【解决方案2】:

    如果您运行并配置了 microsoft 的 scom(假设这不是一个有趣的项目),并且您能够为其创建一个管理包或认识某个人,这可能有助于您查明是什么原因造成的问题。我意识到这是一个长镜头,但如果这确实描述了您的场景,那么如果没有找到其他解决方案,我会这样做。

    【讨论】:

      【解决方案3】:

      IIS 具有健康检查功能,可定期检查 IIS 工作进程是否挂起或无法使用。如果工作进程在调试器中停止,从 IIS 的角度来看,它看起来不健康,IIS 会杀死它并启动一个新进程。

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

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

      【讨论】:

      • 如果我将 Idle Timeout 设置为 0 会发生什么?这是否被视为无限超时?
      【解决方案4】:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-17
        • 1970-01-01
        • 1970-01-01
        • 2020-02-17
        • 2018-05-20
        • 2022-01-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多