在isualStudio中远程调试远程IIS计算机上的ASP.NETCore

时间: 2022-07-26 16:00:12 浏览次数:206

先决条件

这些过程已在以下服务器配置上进行了测试:

Windows Server 2012 R2 和 IIS 8Windows Server 2016 和 IIS 10Windows Server 2019 和 IIS 10网络要求

不支持在通过代理连接的两台计算机之间进行调试。 不建议通过高延迟或低带宽连接(例如拨号 Internet)或在跨国家/地区的 Internet 上进行调试,否则可能会导致调试失败或速度过慢。 有关要求的完整列表,请参阅要求。

应用已在 IIS 中运行?如果应用正在 IIS 中运行,你只想下载远程调试器并启动调试,请转到在 Windows Server 上下载并安装远程工具。如果需要帮助确保在 IIS 中正确设置、部署和运行应用,以便进行调试,请按照本主题中的所有步骤进行操作。创建新的 ASP.NET Core Web 应用呈现。在 Visual Studio 2019 中的启动窗口上,选择新建项目。 如果开始窗口未打开,请选择文件 > 开始窗口 。 键入Web 应用,选择C作为语言,然后选择ASP.NET Core Web 应用程序(模型-视图-控制器),再选择下一步。 在下一个屏幕上,将项目命名为MyASPApp,然后选择下一步。选择建议的目标框架或 .NET 6,然后选择创建。打开 About.cshtml.cs 文件,并在 OnGet 方法中设置断点(在较旧的模板中,改为打开 HomeController.cs 并在 About() 方法中设置断点)。在 Windows Server 上安装和配置 IIS

以下步骤仅显示 IIS 的基本配置。 有关更深入的信息或要安装到 Windows 桌面计算机,请参阅发布到 IIS 或使用 ASP.NET 3.5 和 ASP.NET 4.5 的 IIS 8.0。

对于 Windows Server 操作系统,通过管理链接或服务器管理器中的仪表板链接使用添加角色和功能向导 。 在服务器角色步骤中,选中Web 服务器(IIS)框 。

在角色服务步骤中,选择所需 IIS 角色服务,或接受提供的默认角色服务 。 如果要使用发布设置和 Web 部署启用部署,请确保选中IIS 管理脚本和工具 。

继续执行确认步骤,安装 Web 服务器角色和服务。 安装 Web 服务器 (IIS) 角色后无需重启服务器/IIS。

更新 Windows Server 上的浏览器安全设置

如果在 Internet Explorer 中启用了增强的安全配置(默认情况下已启用),则可能需要将某些域添加为受信任的站点,以便下载某些 Web 服务器组件。 通过转到Internet 选项>安全性>受信任的站点>站点来添加受信任的站点。 添加以下域。

microsoft.comgo.microsoft.comdownload.microsoft.comiis.net

下载软件时,可能会收到授权加载各种网站脚本和资源的请求。 其中一些资源不是必需的,但为了简化此过程,请在出现提示时单击添加。

在 Windows Server 上安装 ASP.NET Core在托管系统上安装 .NET Core 托管捆绑包。 捆绑包可安装 .NET Core 运行时、.NET Core 库和 ASP.NET Core 模块。 有关更深入的说明,请参阅发布到 IIS。对于当前的 .NET Core 托管捆绑包,请安装 ASP.NET Core 托管捆绑包。 对 .NET Core 2,安装 .NET Core Windows Server 托管捆绑包。 备注如果系统没有 Internet 连接,请先获取并安装 Microsoft Visual C++ 2015 Redistributable,再安装 .NET Core Windows Server 托管捆绑包。重启系统(或在命令提示符处依次执行net stop was /y和net start w3svc,了解系统路径的更改) 。选择部署选项

如果需要帮助将应用部署到 IIS,请考虑以下选项:

通过在 IIS 中创建发布设置文件并在 Visual Studio 中导入设置来进行部署。 在某些情况下,这是一种快速部署应用的方法。 当你创建发布设置文件时,系统会在 IIS 中自动设置权限。通过发布到本地文件夹并使用首选方法将输出复制到 IIS 上准备就绪的应用文件夹来进行部署。(可选)使用发布设置文件进行部署

备注

此部署方法使用 Web 部署,必须安装在服务器上。 如果要手动配置 Web 部署,而不是导入设置,则可以安装 Web 部署 3.6,而不是用于托管服务器的 Web 部署 3.6。 但是,如果手动配置 Web 部署,则需要确保使用正确的值和权限配置服务器上的应用文件夹(请参阅配置 ASP.NET 网站)。

配置 ASP.NET Core 网站在 IIS 管理器左窗格的连接下,选择应用程序池 。 打开 DefaultAppPool,将.NET CLR 版本设置为无托管代码 。 ASP.NET Core 需要执行此操作。 默认网站使用 DefaultAppPool。停止并重新启动 DefaultAppPool。在 Windows Server 上安装和配置用于宿主服务器的 Web 部署

用于托管服务器的 Web 部署 3.6 提供额外的配置功能,可实现从 UI 创建发布设置文件。

IIS 的Web 平台安装程序允许安装版本 3.6 而不是 4.0,因此这是本文中建议的版本。

如果已在 Windows Server 上安装 Web 部署,请使用控制面板 > 程序 > 卸载程序将其卸载。接下来,在 Windows 服务器上安装用于托管服务器的 Web 部署 3.6。要安装用于托管服务器的 Web 部署,请使用 Web 平台安装程序 (WebPI)。 (要从 IIS 查找 Web 平台安装程序链接,请选择服务器管理器左侧窗格中的IIS。 在服务器窗格中,右键单击服务器并选择Internet Information Services (IIS)管理器。 然后,在操作窗口中,使用获取新的 Web 平台组件连接 。)你还可以从下载获取 Web 平台安装程序 (WebPI)。在 Web 平台安装程序中,在应用程序选项卡中查找用于托管服务器的 Web 部署 3.6。如果尚未安装IIS 管理脚本和工具,请立即安装。转到选择服务器角色 > Web 服务器(IIS) > 管理工具,然后选择IIS 管理脚本和工具角色,点击下一步,然后安装角色 。需要脚本和工具来生成发布设置文件。根据需要,打开控制面板>系统和安全>管理工具>服务来验证 Web 部署是否正确运行,然后确保:Web 部署代理服务正在运行(旧版本中的服务名称不同)。Web 管理服务正在运行。如果某个代理服务未运行,请重新启动Web 部署代理服务。如果 Web 部署代理服务不存在,请转到控制面板>程序>卸载程序,查找Microsoft Web 部署 。 选择更改安装,并确保对 Web 部署组件选择将安装到本地驱动器 。 完成更改安装步骤。在 Windows Server 上的 IIS 中创建发布设置文件关闭并重新打开 IIS 管理控制台以在 UI 中显示更新的配置选项。在 IIS 中,右键单击默认网站,选择部署 > 配置 Web 部署发布 。如果看不到部署菜单,请参阅前面的部分来验证 Web 部署是否正在运行。在配置 Web 部署发布对话框中,检查设置。单击设置。在结果面板中,输出显示已为指定用户授予访问权限,并且已在对话框中显示的位置生成了具有 .publishsettings 文件扩展名的文件。XML复制将此文件复制到运行 Visual Studio 的计算机上。如果计算机上的 Visual Studio 中打开有 ASP.NET 项目,则在该计算机的解决方案资源管理器中右键单击该项目,然后选择发布。如果先前配置了任何发布配置文件,则发布窗格会显示。 单击新建或创建新配置文件。选择该选项以导入配置文件。在发布对话框中,单击导入配置文件。导航到上一节中创建的发布设置文件的位置。在导入发布设置文件对话框中,导航到在上一部分创建的配置文件并选择该文件,然后单击打开 。单击完成保存发布配置文件,然后单击发布。Visual Studio 开始执行部署过程,并且输出窗口将显示进度和结果。如果出现任何部署错误,请单击编辑以编辑设置。 修改设置,然后单击验证以测试新设置。 如果找不到主机名,请尝试服务器和目标 URL字段中的 IP 地址而不是主机名 。切换到调试配置。选择编辑以编辑配置文件,然后选择设置。 选择调试配置,然后在文件发布选项下选择删除目标处的其他文件。 重要如果选择发布配置,则在发布时,需要在 web.config 文件中禁用调试。单击保存,然后重新发布应用。(可选)通过发布到本地文件夹进行部署

如果要使用 PowerShell、RoboCopy 将应用复制到 IIS,或者要手动复制文件,则可以使用此选项来部署应用。

在 Windows Server 计算机上配置 ASP.NET Core 网站打开 Windows 资源管理器并创建新文件夹 C:\Publish,稍后将在其中部署 ASP.NET Core 项目。如果尚未打开,请打开Internet Information Services (IIS) 管理器。 (在服务器管理器的左窗格中,选择IIS。 右键单击服务器并选择Internet Information Services (IIS)管理器。)在左窗格中的连接下,转到站点。选择默认网站,选择基本设置,然后将物理路径设置为C:\Publish。右键单击默认网站 节点,然后选择添加应用程序 。将别名字段设置为MyASPApp,接受默认应用程序池 (DefaultAppPool),并将物理路径设置C:\Publish。在连接下,选择应用程序池。 打开DefaultAppPool,然后将应用程序池字段设置为无托管代码。右键单击 IIS 管理器中的新站点,选择编辑权限,并确保 IUSR、IIS_IUSRS 或配置为访问 Web 应用的用户是具有读取和执行权限的授权用户。如果没有看到其中任何一个用户具有访问权限,请执行相应步骤将 IUSR 添加为具有读取和执行权限的用户。

还可以使用文件系统或其他工具发布和部署应用。

在解决方案资源管理器 中,右键单击项目节点并选择发布 (对于 Web Forms,选择发布 Web 应用 )。如果先前配置了任何发布配置文件,则发布窗格会显示 。 单击新建配置文件 。在发布 对话框中,选择文件夹 ,单击浏览 ,然后创建一个新文件夹C:\Publish 。单击完成保存发布配置文件。切换到调试配置。选择编辑以编辑配置文件,然后选择设置。 选择调试配置,然后在文件发布选项下选择删除目标处的其他文件。 备注如果使用发布生成,则在发布时,需要在 web.config 文件中禁用调试。单击发布 。应用程序将项目的调试 配置发布到本地文件夹。 输出窗口中将显示进度。将 ASP.NET 项目目录从 Visual Studio 计算机复制到 Windows Server 计算机上为 ASP.NET 应用配置的本地目录中(本例中为 C:\Publish )。 在本教程中,我们假设你进行手动复制,不过,你也可以使用其他工具,例如 PowerShell、Xcopy 或 Robocopy。 注意如果需要更改代码或重新生成,则必须重新发布并重复此步骤。 复制到远程计算机的可执行文件必须与你的本地源和符号完全匹配。 如果没有这样做,则在尝试调试进程时,你会在 Visual Studio 中收到 cannot find or open the PDB file 警告。在 Windows Server 上,通过在浏览器中打开应用来验证是否可以正常运行应用。如果应用无法正常运行,则说明服务器和 Visual Studio 计算机上安装的 ASP.NET 版本可能不匹配,或者 IIS 或网站配置可能有问题。 请重新检查前面的步骤。在 Windows Server 上下载并安装远程工具下载适合 Visual Studio 版本的最新远程工具。 最新的远程工具版本与早期的 Visual Studio 版本兼容,但早期的远程工具版本与后来的 Visual Studio 版本不兼容。 (例如,如果使用的是 Visual Studio 2017,请下载 Visual Studio 2017 远程工具的最新更新。 在这种情况下,请不要下载 Visual Studio 2019 的远程工具。)下载与要安装远程工具的计算机具有相同体系结构的远程工具。 例如,如果要在运行 64 位操作系统的远程计算机上调试 32 位应用,请安装 64 位远程工具。

可以通过将 msvsmon.exe 复制到远程计算机,而不是安装远程工具来运行远程调试器。 但是,远程调试器配置向导 (rdbgwiz.exe) 仅在安装远程工具时才可用。 如果要将远程调试器作为服务运行,则可能需要使用向导进行配置。 有关详细信息,请参阅(可选)将远程调试器配置为服务。

备注

若要在 ARM 设备上调试 Windows 10 应用,请使用 ARM64,它可用于最新版本的远程工具。若要在 Windows RT 设备上调试 Windows 10 应用,请使用 ARM,它仅在 Visual Studio 2015 远程工具下载中可用。在 Windows Server 上设置远程调试器在远程计算机上,从开始菜单中查找并启动远程调试器 。如果你没有远程计算机的管理权限,请右键单击远程调试器应用,然后选择以管理员身份运行 。 否则,正常启动即可。如果打算附加到以管理员身份运行或在其他用户帐户(如 IIS)下运行的进程,请右键单击远程调试器应用,然后选择以管理员身份运行 。 有关详细信息,请参阅以管理员身份运行远程调试器。当第一次(或在配置它之前)启动远程调试器时,将显示远程调试配置对话框。如果未安装 Windows Web 服务 API(仅会在 Windows Server 2008 R2 上发生这种情况),请选择安装按钮。请至少选择一种要对其使用远程工具的网络类型。 如果这些计算机通过域连接,则必须选择第一项。 如果这些计算机通过工作组或家庭组连接,请根据需要选择第二或第三项。选择配置远程调试,配置防火墙并启动远程调试器。配置完成后,将显示远程调试器窗口。远程调试器正在等待连接。 使用显示的服务器名称和端口号在 Visual Studio 中设置远程连接配置。

若要停止远程调试器,请选择文件 > 退出 。 你可以从开始菜单或通过以下命令行重新启动它:

备注

如果需要为其他用户添加权限,请更改远程调试器的身份验证模式或端口号,请参阅配置远程调试器。

有关将远程调试器作为服务运行的信息,请参阅将远程调试器作为服务运行。

在 Visual Studio 计算机上,打开要调试的解决方案(如果按照本文中的所有步骤操作,则为 MyASPApp)。在 Visual Studio 中,单击调试>附加到进程(Ctrl + Alt + P)。 提示在 Visual Studio 2017 及更高版本中,可以使用调试>重新附加到进程...重新附加到以前附加到的同一进程(Shift + Alt + P)。将限定符字段设置为 ,并按 Enter 。确保 Visual Studio 将所需的端口添加到计算机名称中,其格式为::port在 Visual Studio 2019 中应看到 :4024端口是必需的。 如果看不到端口号,请手动添加。单击刷新。 可用进程 窗口中将显示某些进程。如果看不到任何进程,请尝试使用 IP 地址而不是远程计算机名称(端口是必需的)。 可以在命令行中使用 ipconfig 来获取 IPv4 地址。如果要使用查找按钮,则可能需要在服务器上打开 UDP 端口 3702。勾选显示所有用户的进程 。键入进程名称的第一个字母,以快速查找应用。如果正在 IIS 上使用进程内托管模型,请选择正确的 w3wp.exe 进程。 从 .NET Core 3 开始,这是默认设置。否则,请选择 dotnet.exe 进程。 (这是进程外托管模型。)如果有多个进程显示 w3wp.exe 或 dotnet.exe,请检查用户名列。 在某些情况下,用户名列显示应用池名称,例如 IIS APPPOOL\DefaultAppPool。 如果你看到了应用池,但它不是唯一的,则为要调试的应用实例创建一个使用新名称的应用池,然后就可以在用户名列中轻松找到它了。单击附加。打开远程计算机的网站。 在浏览器中,转到 http://。将显示 ASP.NET 网页。在正在运行的 ASP.NET 应用程序中,单击指向关于页面的链接。应在 Visual Studio 中命中断点。IIS 部署故障排除如果无法使用主机名连接到主机,请尝试改用 IP 地址。确保远程服务器上已打开所需的端口。对于 ASP.NET Core,需要确保将 DefaultAppPool 的应用程序池字段设置为无托管代码 。验证应用中使用的 ASP.NET 版本是否与服务器上安装的版本相同。 对于你的应用,你可在属性页面上查看和设置版本。 若要将应用设置为其他版本,必须安装该版本。如果应用尝试打开,但显示证书警告,请选择信任站点。 如果你已关闭警告,则可在项目中编辑发布配置文件(*.pubxml 文件),并添加以下元素(仅供测试用):true如果在 Visual Studio 中无法启动应用,请在 IIS 中启动应用来测试它是否正确部署。在 Visual Studio 的输出窗口中查看状态信息,并查看你的错误消息。在 Windows Server 上打开所需的端口

在大多数设置中,必需端口通过安装 ASP.NET 和远程调试器来打开。 但是,你可能需要验证端口是否已打开。

备注

必需端口:

80 - 对于 IIS 是必需的 (HTTP)4024 - 从 Visual Studio 2019 进行远程调试时必需(有关详细信息,请参阅远程调试器端口分配)。UDP 3702 -(可选)通过发现端口,可在附加到 Visual Studio 中的远程调试器时使用查找按钮。若要在 Windows Server 上打开端口,请打开开始菜单,搜索高级安全 Windows 防火墙。然后选择入站规则>新建规则>端口,单击下一步。 (对于 UDP 3702,请改为选择出站规则。)在特定本地端口下,输入端口号,然后单击下一步。单击允许连接,单击下一步。选择要为端口启用的一个或多个网络类型,然后单击下一步。你选择的类型必须包括远程计算机连接到的网络。为入站规则添加名称(例如,IIS、Web 部署或 msvsmon),然后单击完成。应该能在入站规则或出站规则列表中看到自己的新规则。如果需要有关配置 Windows 防火墙的详细信息,请参阅配置 Windows 防火墙以便进行远程调试。为其他必需端口创建附加规则。

  非常感谢您读完蓝港网络的这篇文章:"在isualStudio中远程调试远程IIS计算机上的ASP.NETCore",仅为提供更多信息供用户参考使用或为学习交流的方便。我们公司提供:网站建设、网站制作、官网建设、SEO优化、小程序制作等服务,欢迎联系我们提供您的需求。

标签:

Copyright © 常州蓝港网络科技有限公司 苏ICP备2022017479号-1