在 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 调试的先决条件。
在 Visual Studio 解决方案资源管理器 中选择 ASP.NET 核心项目,然后单击 属性 图标,或 按 Alt+Enter,或右键单击并选择 属性。
选择 调试 选项卡,然后单击链接以打开 调试启动配置文件界面。
显示的 UI 对应于项目的
launchSettings.json
文件中的设置。 有关此文件的详细信息,请参阅在 ASP.NET Core 中使用多个环境中的“开发和launchSettings.json
”部分。选择要配置的配置文件进行调试。
- 对于 Kestrel,请选择 https 配置文件或以项目命名的配置文件。
- 对于 IIS Express,请从下拉列表中选择 IIS Express。
- 对于本地 IIS,请选择 “新建” 并创建新的 IIS 配置文件。
确保选中“启动浏览器”。
请确保 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:5000
和https://localhost:5001
。 - 对于 IIS Express,应用 SSL URL 通常是
https://localhost:44334
。
- 对于 https 配置文件,“应用 URL”属性通常是
在“环境变量”下,确保 ASPNETCORE_ENVIRONMENT 显示了值“开发”。 如果没有,请添加变量。
有关环境变量的详细信息,请参阅 环境。
若要调试应用,请在项目中设置某些代码的断点。 在 Visual Studio 工具栏中,确保将配置设置为“调试”。
若要开始调试,请在工具栏中选择配置文件名称,例如 https、IIS Express或工具栏中的 <IIS 配置文件名称>,从 调试 菜单中选择“开始调试”,或按 F5。 调试器在断点处暂停。 如果调试器无法命中断点,请参阅调试疑难解答。
调试 ASP.NET 核心应用
IIS Express 是默认值,并且已预配置。 如果要在本地 IIS 上调试,请确保满足本地 IIS 调试的要求。
在 Visual Studio 解决方案资源管理器 中选择 ASP.NET 核心项目,然后单击 属性 图标,或 按 Alt+Enter,或右键单击并选择 属性。
选择 调试 选项卡。
在“属性”窗格中的“配置文件”旁边,
- 对于 IIS Express,请从下拉列表中选择 IIS Express。
- 对于本地 IIS,请从下拉列表中选择应用名称,或选择 “新建”,创建新的配置文件名称,然后选择“确定”。
在 启动旁边,从下拉列表中选择 IIS Express 或 IIS。
确保选中“启动浏览器”。
在“环境变量”下,确保 ASPNETCORE_ENVIRONMENT 显示了值“开发”。 否则,请选择“添加”进行添加。
使用 文件>保存所选项目 或 Ctrl+S 保存任何更改。
若要调试应用,请在项目中设置某些代码的断点。 在 Visual Studio 工具栏中,确保将配置设置为“调试”,且 IIS Express 或新的 IIS 配置文件名称显示在模拟器字段中。
若要开始调试,请在工具栏中选择 IIS Express 或 <IIS 配置文件名称>,从 调试 菜单中选择“开始调试”,或按 F5 。 调试器在断点处暂停。 如果调试程序无法命中断点,请参阅调试疑难解答。
调试 ASP.NET 应用
IIS Express 是默认值,并且已预配置。 如果要在本地 IIS 上进行调试,请确保满足 本地 IIS 调试要求。
在 Visual Studio 解决方案资源管理器 中选择 ASP.NET 项目,然后单击 属性 图标,或 按 Alt+Enter,或右键单击并选择 属性。
选择“Web”选项卡。
如果未看到“Web”选项卡,请参阅 调试 ASP.NET 核心应用。 Web 选项卡仅针对 ASP.NET Framework 显示。
在“属性”窗格中的“服务器”下,
- 对于 Kestrel,请从下拉列表中选择 https。
- 对于 IIS Express,请从下拉列表中选择 IIS Express。
- 对于本地 IIS,
- 请从下拉列表中选择“本地 IIS”。
- 在 项目 URL 字段旁边,选择 创建虚拟目录(如果尚未在 IIS 中设置应用)。
在 调试器下,选择 ASP.NET。
选择 文件>保存所选项目(或 按 Ctrl+S)以保存所有更改。
若要调试应用,请在项目中设置某些代码的断点。 在 Visual Studio 工具栏中,确保配置设置为 调试,并且所需的浏览器显示在 IIS Express(<浏览器名称>) 或 本地 IIS(<浏览器名称>) 模拟器字段中。
若要开始调试,请在工具栏中选择 IIS Express(<浏览器名称>) 或 本地 IIS(<浏览器名称>),从 调试 菜单中选择“开始调试”,或按 F5。 调试器在断点处暂停。 如果调试程序无法命中断点,请参阅调试疑难解答。
调试疑难解答
如果本地 IIS 调试无法进行到断点,请按照以下步骤进行故障排除。
从 IIS 启动 Web 应用,并确保它正常运行。 使 Web 应用保持运行状态。
在 Visual Studio 中,选择 “调试”>“附加到进程”,或按 Ctrl+Alt+P,然后连接到 ASP.NET 或 ASP.NET Core 进程(通常为 w3wp.exe 或 dotnet.exe)。 有关详细信息,请参阅附加到进程和如何查找 ASP.NET 进程名称。
如果可以通过使用“附加到进程”来连接和命中断点,但不能通过使用“调试”>“启动调试”或 F5 来连接和命中断点,则项目属性中的设置可能不正确。 如果使用 HOSTS 文件,请确保也配置正确。
在 web.config 文件中配置调试
默认情况下,ASP.NET 项目具有 web.config
文件,其中包含应用配置和启动信息,包括调试设置。 必须正确配置 web.config
文件才能进行调试。 上一部分中 属性 设置更新了 web.config
文件,但也可以手动配置它们。
注意
ASP.NET 核心项目最初没有 web.config
文件,但对应用配置和启动信息使用 appsettings.json
和 launchSettings.json
文件。 部署应用会在项目中创建 web.config
文件或文件,但它们通常不包含调试信息。
提示
部署过程可能会更新 web.config
设置,因此在尝试调试之前,请确保为调试配置 web.config
。
手动配置 web.config
文件用于调试:
在 Visual Studio 中,打开 ASP.NET 项目的
web.config
文件。Web.config
是一个 XML 文件,因此包含标记的嵌套部分。 找到configuration/system.web/compilation
部分。 (如果compilation
元素不存在,请创建它。确保
compilation
元素中的debug
属性设置为true
。 (如果compilation
元素不包含debug
属性,请添加它并将其设置为true
。)如果使用本地 IIS 而不是默认 IIS Express 服务器,请确保
compilation
元素中的targetFramework
属性值与 IIS 服务器上的框架匹配。web.config
文件的compilation
元素应如以下示例所示:注意
此示例是
web.config
文件的一部分。configuration
和system.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"
并指定发布版本。