将 ASP.NET Core 应用发布到 IIS

Internet Information Services(IIS)是在 Windows 上运行的通用 Web 服务器,可以托管 ASP.NET Core 应用。如果需要在本地或混合环境的 Windows Server 上运行应用、使用 Windows 身份验证,或与 URL 重写、应用程序请求路由、集中式证书管理等 IIS 功能集成,可以选择 IIS。

本教程介绍在 Windows Server 上安装 .NET 托管捆绑包、在 IIS 管理器中创建站点,以及部署 ASP.NET Core 应用。

先决条件

  • 开发计算机已安装 .NET SDK。
  • Windows Server 已配置“Web 服务器(IIS)”角色。尚未配置时,先按照 IIS 配置指南操作,再返回本教程。

IIS 配置和网站安全包含本教程未覆盖的内容。托管生产应用前,请阅读 Microsoft IIS 文档和 ASP.NET Core 的 IIS 托管指南。本教程未覆盖以下重要场景:

安装 .NET 托管捆绑包

在 IIS 服务器上安装 .NET 托管捆绑包。它包含 .NET 运行时、.NET 库和 ASP.NET Core 模块,该模块使应用能够在 IIS 后方运行。

自 ASP.NET Core 3.0 起,IIS 托管的应用默认采用进程内托管模型,即应用与 IIS 工作进程 w3wp.exe 在同一进程中运行。原文指出,其性能优于进程外托管;更多说明见 IIS 托管指南。

使用当前 .NET 托管捆绑包安装程序(直接下载)下载:

  1. 在 IIS 服务器上运行安装程序。
  2. 重启服务器,或依次在命令行执行 net stop was /y 和 net start w3svc。

创建 IIS 站点

  1. 在 IIS 服务器上创建文件夹,用于存放应用发布后的文件和文件夹。稍后将其路径设置为 IIS 的应用物理路径。布局说明见 ASP.NET Core 目录结构。
  2. 在 IIS 管理器“连接”面板中展开服务器节点,右键单击“站点”,选择“添加网站”。
  3. 输入站点名称,将物理路径设为刚创建的部署文件夹,配置绑定,选择“确定”。
  4. 确认进程模型标识具有所需权限。

不要使用顶级通配符绑定 http://*:80/ 或 http://+:80,强通配符和弱通配符都可能带来安全漏洞。应使用明确的主机名。如果控制整个父域,子域通配符(例如 *.mysub.com)不具有相同风险;*.com 则属于易受攻击的情况。详见 RFC 9110 第 7.2 节。

如果把应用池“进程模型 > 标识”从默认的 ApplicationPoolIdentity 改成其他标识,须确认新标识有权访问应用文件夹、数据库及其他必需资源。例如,应用读取和写入文件的文件夹需要相应读写权限。

创建 ASP.NET Core 应用

创建任意类型的 ASP.NET Core 服务端应用。本教程适用于 IIS 托管的服务端应用,包括 Blazor Web App。独立 Blazor WebAssembly 应用请参阅使用 IIS 托管和部署 Blazor WebAssembly。

发布和部署应用

发布是生成可供服务器托管的已编译应用;部署是把发布结果移到托管系统。发布由 .NET SDK 完成,部署可采用多种方式。本教程使用文件夹部署:先发布到文件夹,再把其中内容移到 IIS 管理器设置的站点物理路径。

应用可以发布为依赖框架(服务器必须安装 .NET),或自包含(发布结果包含 .NET 运行时)。原文建议大多数 IIS 部署使用依赖框架方式,因为托管捆绑包已提供运行时。详见 .NET 应用部署。

发布时自动生成 web.config,IIS 用它配置 ASP.NET Core 模块。除非进行高级配置调整,否则不要删除或手动编辑该文件。

Visual Studio

  1. 在“解决方案资源管理器”中右键单击项目,选择“发布”。
  2. 在对话框中选择“文件夹”作为目标,选择“下一步”。
  3. 设置文件夹位置。如果 IIS 站点文件夹是开发计算机可访问的网络共享,填写共享路径,当前用户必须具有写入权限。如果无法直接部署到站点文件夹,可发布到可移动介质,再将发布文件移动到服务器站点的物理路径;应复制 bin/Release/{TARGET FRAMEWORK}/publish 文件夹中的内容,其中目标框架例如 net10.0。
  4. 选择“完成”,再选择“发布”。

.NET CLI

  1. 在命令行用 dotnet publish按 Release 配置发布:
   dotnet publish --configuration Release
  1. 将 bin/Release/{TARGET FRAMEWORK}/publish 中的内容移到服务器上的 IIS 站点物理路径。{TARGET FRAMEWORK} 表示目标框架,例如 net10.0。

浏览网站

应用收到第一个请求后即可通过浏览器访问。向 IIS 管理器中为站点设置的端点绑定发出请求。

后续步骤

本教程介绍了托管捆绑包安装、IIS 站点创建和应用部署。进一步阅读 Windows 上的 IIS 托管概述。

其他资源

ASP.NET Core 文档

应用部署

IIS HTTPS 配置

IIS 和 Windows Server

IIS 管理员部署资源


来源:Microsoft / ASP.NET Core 文档贡献者,官方原文,作者元数据 wadepickett。正文按 CC BY 4.0提供,许可证据。本稿进行了中文措辞整理,并依据同一官方英文源码校正中文页面的通配符例子与发布目录表述;不代表 Microsoft 背书。内容按许可原样提供、不作保证。本次仅静态核对文档,没有执行安装、命令或服务器部署。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容