错误:无法在 Web 服务器上启动调试

当尝试对在 Web 服务器上运行的 ASP.NET 应用程序进行调试时,可能会得到此错误信息:Unable to start debugging on the Web server

通常情况下,由于错误或配置发生更改,需要更新应用程序池和 / 或 IIS 重置,因此会出现此错误。 可通过打开命令提示符并键入 iisreset 重置 IIS。

详细的错误消息是什么?

Unable to start debugging on the Web server是通用消息。 通常情况下,更具体的消息包含在错误字符串,也许能够帮助你确定问题或搜索更精确的修补程序的原因。 下面是几个附加到主错误消息的更常见的错误消息:

IIS 未列出与启动 URL 匹配的网站

  • 以管理员身份重新启动 Visual Studio ,然后重试调试。 (某些 ASP.NET 调试方案需要提升权限。)

    若要将 Visual Studio 配置为始终以管理员身份运行,请右键单击 Visual Studio 快捷方式图标,选择“属性”>“高级”,然后选择“始终以管理员身份运行”。

Web 服务器配置不正确

无法连接到 Web 服务器

  • 是否在同一台计算机上运行 Visual Studio 和 Web 服务器,并使用F5 (而不是附加到进程)进入调试? 打开项目属性,并确保将项目配置为连接到正确的 Web 服务器并启动 URL。 (打开“属性”>Web”>服务器”或“属性”>“调试”,具体取决于项目类型。对于 Web Forms 项目,则打开“属性页面”>开始选项”>服务器”)

  • 否则,请重新启动应用程序池,然后重置 IIS。 有关详细信息,请参阅检查 IIS 配置

Web 服务器未及时响应

  • 重置 IIS,然后再次尝试进行调试。 可以将多个调试器实例附加到 IIS 进程;重置操作将终止这些实例。 有关详细信息,请参阅检查 IIS 配置

该操作已超时

  • 重置 IIS,然后再次尝试进行调试。 可以将多个调试器实例附加到 IIS 进程;重置操作将终止这些实例。 有关详细信息,请参阅检查 IIS 配置

Microsoft Visual Studio 远程调试监视器 (msvsmon.exe) 似乎没有在远程计算机上运行

  • 如果在远程计算机上进行调试,请确保已安装并且正在运行远程调试器。 如果消息提到了防火墙,请确保防火墙中正确的端口处于打开状态,尤其是在使用第三方防火墙时。
  • 如果使用的是 HOSTS 文件,请确保其配置正确。 例如,如果是按 F5 进行调试(而不是“附加到进程”),则 HOSTS 文件中需要包含与项目属性中相同的项目 URL,“属性”>“Web”>“服务器”或“属性”>“调试”,具体取决于项目类型。

远程服务器返回了错误

检查IIS 日志文件错误子代码和其他信息,以及此 IIS 7博客文章

此外,下面是一些常见的错误代码和一些建议。

  • (403) 已禁止。 此错误有许多可能的原因,因此请检查您的日志文件和网站的 IIS 安全设置。 请确保服务器的 web.config 文件的编译元素中包含 debug=true。 请确保你的 Web 应用程序文件夹有正确的权限并验证你的应用程序池配置正确 (密码可能已更改)。 请参阅检查 IIS 配置。 如果这些设置已正确且正在本地进行调试,则还需验证是否正在连接到正确的服务器类型和 URL(通过“属性”>Web”>“服务器”或“属性”>调试”,具体取决于项目类型)。
  • (503) 服务器不可用。 应用程序池可能由于错误或配置更改而停止。 重启应用程序池。
  • (404) 未找到。 请确保应用程序池是针对正确的 ASP.NET 版本配置的。

无法启动 ASP.NET 调试

  • 重启应用程序池并重置 IIS。 有关详细信息,请参阅检查 IIS 配置
  • 如果正在 URL 重写,测试一个基本 web.config,没有 URL 重写的配置。 请参阅 注意 有关 URL 重写中的模块检查 IIS 配置

调试器无法连接到远程计算机

若要在本地进行调试,请在 Visual Studio 中打开项目属性,并确保将项目配置为连接到正确的 Web 服务器和 URL。 (打开“属性”>Web”>“服务器”或“属性”>“调试”,具体取决于项目类型。)

使用 32 位版本 Visual Studio 进行本地调试时可能会出现此错误(32 位版本 Visual Studio 使用 64 位版本的远程调试器来调试 64 位应用程序)。 Visual Studio 2019 及更早版本是 32 位应用程序。 检查 IIS 上的应用程序池,确保“启用 32 位应用程序”设置为 true,重启 IIS 然后重试。

此外,如果你使用HOSTS文件,请确保配置正确。 例如,HOSTS 文件中需要包含与项目属性中相同的项目 URL,则打开“属性”>“Web”>“服务器”或“属性”>“调试”,具体取决于项目类型。

请参见有关常见配置错误的帮助。 在调试器外部运行网页可能会提供进一步的信息。

  • 是否在同一台计算机上运行 Visual Studio 和 Web 服务器? 打开项目属性,并确保将项目配置为连接到正确的 Web 服务器并启动 URL。 (打开“属性”>“Web”>“服务器”或“属性”>“调试”,具体取决于项目类型。)

  • 如果这不起作用,或者你正在进行远程调试,请按照检查 IIS 配置中的步骤操作。

不支持操作。 未知错误:错误号

如果正在 URL 重写,测试一个基本 web.config,没有 URL 重写的配置。 请参阅 注意 有关 URL 重写中的模块检查 IIS 配置

检查 IIS 配置

在详细介绍了解决问题的步骤之后,在再次尝试调试前,你可能还需要重置 IIS。 你可以通过打开命令提示符并键入 iisreset 执行该操作。

  • 停止并重启 IIS 应用程序池,然后重试。

    应用程序池可能由于出现错误而停止。 或者,你所做的另一种配置更改可能要求停止并重启应用程序池。

    注意

    如果应用程序池保持停止,你可能需要从控制面板卸载 URL 重写模块,然后重新安装模块。 大量的系统升级后可能出现此问题。

  • 请检查您的应用程序池配置,如果需要就进行更正,然后重试。

    可能 Visual Studio 项目版本不匹配 ASP.NET 配置的应用程序池。 更新应用程序池中的 ASP.NET 版本并重新启动它。 有关详细信息,请参阅IIS 8.0 使用 ASP.NET 3.5 和 ASP.NET 4.5

    此外,如果密码凭据已更改,可能需要在应用程序池或网站中进行更新。 可在应用程序池中的“高级设置”>“进程模型”>“身份”中更新这些凭据。 对于网站,请在“基础设置”>“连接方式…”中更新这些凭据。重启应用程序池。

  • 检查 Web 应用程序文件夹是否具有适当的权限。

    请确保你提供 IIS_IUSRS、IUSR、或与特定用户关联应用程序池读取和执行的 Web 应用程序文件夹的权限。 修复该问题并重新启动应用程序池。

  • 请确保在 IIS 上安装了正确版本的 ASP.NET。

    IIS 中的ASP.NET 与 Visual Studio 项目的版本不匹配可能会导致此问题。 可能需要在 web.config 中设置框架版本。若要在 IIS 上安装 ASP.NET Core,请参阅在 Windows Server 上安装 ASP.NET Core;若要安装 ASP.NET,请参阅在 Windows Server 上安装 ASP.NET。 另请参阅IIS 8.0 使用 ASP.NET 3.5 和 ASP.NET 4.5或为 ASP.NET Core 使用 IIS 的 Windows 上的主机

  • 如果只使用 IP 地址,则解决身份验证错误

    默认情况下,IP 地址被假定为 Internet 的一部分,而在 Internet 上不进行 NTLM 身份验证。 如果已在 IIS 中将网站配置为需要身份验证,则此身份验证将失败。 若要更正此问题,可以指定远程计算机的名称,而不是 IP 地址。

其他原因

如果此问题与 IIS 配置无关,请尝试以下步骤:

  • 通过管理员权限重启 Visual Studio,然后重试。

    某些 ASP.NET 调试方案需要 Visual Studio 的提升权限。

  • 如果正在运行 Visual Studio 多个实例,(使用管理员权限)重新打开你的 Visual Studio 一个实例中的项目,然后重试。

  • 如果使用的是具有本地地址的 HOSTS 文件,请尝试使用环回地址,而不是计算机的 IP 地址。

    如果不使用本地地址,请确保 HOSTS 文件包含与项目属性中相同的项目 URL,“属性”>“Web”>“服务器”或“属性”>“调试”,具体取决于项目类型。

更多疑难解答步骤

  • 在服务器上的浏览器中打开 localhost 页。

    如果未正确安装 IIS,则当你在浏览器中键入 http://localhost 时会收到错误。

    若要详细了解如何部署到 IIS,请参阅使用 ASP.NET 3.5 和 ASP.NET 4.5 的IIS 8.0,或者使用 IIS 在 Windows 上托管 ASP.NET Core

  • 在服务器上创建基本 ASP.NET 应用程序(或使用基本 web.config 文件)。

    如果无法让应用使用调试器,请尝试在服务器上本地创建基本 ASP.NET 应用程序,并尝试对其进行调试。 (可能需要使用默认的 ASP.NET MVC 模板。)如果可以调试该基本应用,这也许能帮助你识别两种配置的不同之处。 查看 web.config 文件中的设置差异,例如 URL 重写规则。

另请参阅