在 Visual Studio 中调试 ASP.NET 或 ASP.NET 核心应用

可以在 Visual Studio 中调试 ASP.NET 和 ASP.NET Core 应用。 此过程在 ASP.NET 和 ASP.NET Core 之间有所不同,以及是在 IIS Express 还是本地 IIS 服务器上运行它。

注意

以下步骤和设置仅适用于本地服务器上的调试应用。 在远程 IIS 服务器上调试应用使用“附加到进程”,并忽略这些设置。 有关远程调试 ASP.NET 和 ASP.NET 核心的详细信息和说明,请参阅 远程 IIS 计算机上的远程调试 ASP.NET Core,以及 远程调试 Azure 应用服务

Visual Studio 随附了内置的 Kestrel 和 IIS Express 服务器。 Kestrel 是 ASP.NET Core 项目的默认调试服务器,并且已预配置。 IIS Express 是 ASP.NET 的默认调试服务器。

Visual Studio 随附了内置的 IIS Express 服务器。 IIS Express 是 ASP.NET 和 ASP.NET 核心项目的默认调试服务器,并且已预配置。 这是调试的最简单方法,非常适合初始调试和测试。

对于 ASP.NET Core,还可以在 Kestrel Web 服务器上调试。

本地 IIS 服务器的先决条件

还可以在本地 IIS 服务器(版本 8.0 或更高版本)上调试配置为运行应用的 ASP.NET 或 ASP.NET Core 应用。 若要在本地 IIS 上进行调试,必须满足以下要求:

  • 如果尚未安装,请安装 ASP.NET 和 Web 开发工作负载。 (重新运行 Visual Studio 安装程序,选择 修改,然后添加此工作负荷。

  • 以管理员身份运行 Visual Studio。

  • 使用 ASP.NET 和/或 ASP.NET Core 的适当版本安装和正确配置 IIS。 若要详细了解如何结合使用 IIS 和 ASP.NET Core,请参阅使用 IIS 在 Windows 上托管 ASP.NET Core。 有关 ASP.NET,请参阅 安装 IIS 和 ASP.NET 模块

  • 确保应用在 IIS 上运行,并在浏览器中打开。

调试 ASP.NET 核心应用

https 或基于项目名称的默认配置文件可能存在,这些配置文件是为 Kestrel Web 服务器配置的。 如果要在本地 IIS 上进行调试,请确保满足 本地 IIS 调试的先决条件

  1. 在 Visual Studio 解决方案资源管理器 中选择 ASP.NET 核心项目,然后单击 属性 图标,或 按 Alt+Enter,或右键单击并选择 属性

  2. 选择 调试 选项卡,然后单击链接以打开 调试启动配置文件界面

    显示的 UI 对应于项目的 launchSettings.json 文件中的设置。 有关此文件的详细信息,请参阅在 ASP.NET Core 中使用多个环境中的“开发和 launchSettings.json”部分。

  3. 选择要配置的配置文件进行调试。

    • 对于 Kestrel,请选择 https 配置文件或以项目命名的配置文件
    • 对于 IIS Express,请从下拉列表中选择 IIS Express
    • 对于本地 IIS,请选择 “新建” 并创建新的 IIS 配置文件。
  4. 确保选中“启动浏览器”

  5. 请确保 URL应用 URL应用 SSL URL 正确。

    URL 指定 .NET Core 或 .NET 5+ 主机 URL 的位置。 对于根据项目命名的配置文件(即 launchSettings.json 中的 commandName 属性为 Project),Kestrel 服务器侦听指定的端口。 对于 IIS 配置文件,此值通常与 应用 URL相同。 有关详细信息,请参阅 配置项目下的 IIS 启动配置文件部分。

    “应用 URL”和“应用 SSL URL”指定应用程序 URL

    • 对于 https 配置文件,“应用 URL”属性通常是 https://localhost:7241;http://localhost:5175
    • 对于根据项目命名的配置文件,这些属性通常为 http://localhost:5000https://localhost:5001
    • 对于 IIS Express,应用 SSL URL 通常是 https://localhost:44334
  6. 在“环境变量”下,确保 ASPNETCORE_ENVIRONMENT 显示了值“开发”。 如果没有,请添加变量。

    ASP.NET 核心调试器设置

    有关环境变量的详细信息,请参阅 环境

  7. 若要调试应用,请在项目中设置某些代码的断点。 在 Visual Studio 工具栏中,确保将配置设置为“调试”

  8. 若要开始调试,请在工具栏中选择配置文件名称,例如 httpsIIS Express或工具栏中的 <IIS 配置文件名称>调试 菜单中选择“开始调试”,或按 F5。 调试器在断点处暂停。 如果调试器无法命中断点,请参阅调试疑难解答

调试 ASP.NET 核心应用

IIS Express 是默认值,并且已预配置。 如果要在本地 IIS 上调试,请确保满足本地 IIS 调试的要求

  1. 在 Visual Studio 解决方案资源管理器 中选择 ASP.NET 核心项目,然后单击 属性 图标,或 按 Alt+Enter,或右键单击并选择 属性

  2. 选择 调试 选项卡。

  3. 在“属性”窗格中的“配置文件”旁边

    • 对于 IIS Express,请从下拉列表中选择 IIS Express
    • 对于本地 IIS,请从下拉列表中选择应用名称,或选择 “新建”,创建新的配置文件名称,然后选择“确定”
  4. 启动旁边,从下拉列表中选择 IIS ExpressIIS

  5. 确保选中“启动浏览器”

  6. 在“环境变量”下,确保 ASPNETCORE_ENVIRONMENT 显示了值“开发”。 否则,请选择“添加”进行添加

    ASP.NET 核心调试器设置

  7. 使用 文件>保存所选项目Ctrl+S 保存任何更改。

  8. 若要调试应用,请在项目中设置某些代码的断点。 在 Visual Studio 工具栏中,确保将配置设置为“调试”,且 IIS Express 或新的 IIS 配置文件名称显示在模拟器字段中

  9. 若要开始调试,请在工具栏中选择 IIS Express<IIS 配置文件名称>调试 菜单中选择“开始调试”,或按 F5 。 调试器在断点处暂停。 如果调试程序无法命中断点,请参阅调试疑难解答

调试 ASP.NET 应用

IIS Express 是默认值,并且已预配置。 如果要在本地 IIS 上进行调试,请确保满足 本地 IIS 调试要求

  1. 在 Visual Studio 解决方案资源管理器 中选择 ASP.NET 项目,然后单击 属性 图标,或 按 Alt+Enter,或右键单击并选择 属性

  2. 选择“Web”选项卡

    如果未看到“Web”选项卡,请参阅 调试 ASP.NET 核心应用。 Web 选项卡仅针对 ASP.NET Framework 显示。

  3. 在“属性”窗格中的“服务器”下

    • 对于 Kestrel,请从下拉列表中选择 https
    • 对于 IIS Express,请从下拉列表中选择 IIS Express
    • 对于本地 IIS,
      1. 请从下拉列表中选择“本地 IIS”
      2. 项目 URL 字段旁边,选择 创建虚拟目录(如果尚未在 IIS 中设置应用)。
  4. 调试器下,选择 ASP.NET

    显示 ASP.NET 调试器设置的屏幕截图。

  5. 选择 文件>保存所选项目(或 按 Ctrl+S)以保存所有更改。

  6. 若要调试应用,请在项目中设置某些代码的断点。 在 Visual Studio 工具栏中,确保配置设置为 调试,并且所需的浏览器显示在 IIS Express(<浏览器名称>)本地 IIS(<浏览器名称>) 模拟器字段中。

  7. 若要开始调试,请在工具栏中选择 IIS Express(<浏览器名称>)本地 IIS(<浏览器名称>)调试 菜单中选择“开始调试”,或按 F5。 调试器在断点处暂停。 如果调试程序无法命中断点,请参阅调试疑难解答

调试疑难解答

如果本地 IIS 调试无法进行到断点,请按照以下步骤进行故障排除。

  1. 从 IIS 启动 Web 应用,并确保它正常运行。 使 Web 应用保持运行状态。

  2. 在 Visual Studio 中,选择 “调试”>“附加到进程”,或按 Ctrl+Alt+P,然后连接到 ASP.NET 或 ASP.NET Core 进程(通常为 w3wp.exedotnet.exe)。 有关详细信息,请参阅附加到进程如何查找 ASP.NET 进程名称

如果可以通过使用“附加到进程”来连接和命中断点,但不能通过使用“调试”>“启动调试”或 F5 来连接和命中断点,则项目属性中的设置可能不正确。 如果使用 HOSTS 文件,请确保也配置正确。

在 web.config 文件中配置调试

默认情况下,ASP.NET 项目具有 web.config 文件,其中包含应用配置和启动信息,包括调试设置。 必须正确配置 web.config 文件才能进行调试。 上一部分中 属性 设置更新了 web.config 文件,但也可以手动配置它们。

注意

ASP.NET 核心项目最初没有 web.config 文件,但对应用配置和启动信息使用 appsettings.jsonlaunchSettings.json 文件。 部署应用会在项目中创建 web.config 文件或文件,但它们通常不包含调试信息。

提示

部署过程可能会更新 web.config 设置,因此在尝试调试之前,请确保为调试配置 web.config

手动配置 web.config 文件用于调试:

  1. 在 Visual Studio 中,打开 ASP.NET 项目的 web.config 文件。

  2. Web.config 是一个 XML 文件,因此包含标记的嵌套部分。 找到 configuration/system.web/compilation 部分。 (如果 compilation 元素不存在,请创建它。

  3. 确保 compilation 元素中的 debug 属性设置为 true。 (如果 compilation 元素不包含 debug 属性,请添加它并将其设置为 true。)

    如果使用本地 IIS 而不是默认 IIS Express 服务器,请确保 compilation 元素中的 targetFramework 属性值与 IIS 服务器上的框架匹配。

    web.config 文件的 compilation 元素应如以下示例所示:

    注意

    此示例是 web.config 文件的一部分。 configurationsystem.web 元素中通常还有其他 XML 节,compilation 元素还可能包含其他属性和元素。

    <configuration>
       ...
       <system.web>
           <compilation  debug="true"  targetFramework="4.6.1" ... >
              ...
           </compilation>
       </system.web>
    </configuration>
    

ASP.NET 会自动检测对 web.config 文件所做的任何更改,并应用新的配置设置。 无需重启计算机或 IIS 服务器,更改才会生效。

网站可以包含多个虚拟目录和子目录,每个目录中都有 web.config 个文件。 ASP.NET 应用从 URL 路径中较高级别的 web.config 文件继承配置设置。 分层 web.config 文件设置适用于层次结构中其下的所有 ASP.NET 应用程序。 在层次结构中较低 web.config 文件中设置其他配置会替代较高文件中的设置。

例如,如果在 www.microsoft.com/aaa/web.config中指定 debug="true",则 aaa 文件夹中或 aaa 的任何子文件夹中的任何应用都继承该设置,除非其中一个应用用自己的 web.config 文件替代该设置。

重要

调试模式大大减少了应用的性能。 部署生产应用或执行性能度量时,请在 web.config 中设置 debug="false" 并指定发布版本。