Step1、安装IIS管理器
左下角放大镜搜索:
bash
服务器管理器

右上角,点击"管理":

选择"添加角色和功能":

直接"下一步":

选择"基于角色或基于功能的安装":

选中服务器:

勾选"Web服务器":

勾选".NET Framework 4.7 功能":

执行安装之后,可以在放大镜搜索到"IIS":

Step2、安装 Hosting Bundle
下载地址:
bash
https://dotnet.microsoft.com/en-us/download/dotnet/6.0

安装:



重启服务器,查看模块:

已包含"ASP.NET Core Module v2"模块:

Step3、代码打包发布
bash
dotnet publish v2.csproj -c Release -r win-x64 --self-contained false -o Publish/V1.0.0
参数解释:
-c Release:指定生成配置为 Release(优化版本,移除调试符号)。-r win-x64:指定目标运行时为 Windows x64。--self-contained false:不包含 .NET 运行时,依赖用户系统已安装的 .NET 环境。-o Publish/V1.0.0:输出路径为Publish/V1.0.0。
最终效果:
- 输出内容:仅应用程序文件(.exe、程序集 .dll)和第三方依赖项。
- 体积:较小(仅应用代码)。

Step4、IIS 配置网站
右键添加网站:

名称随便填:

测试:


日志:

Step5、配置 Https
这里使用自签名证书做演示,IIS面板打开"服务器证书":

选择"创建自签名证书":

随便填个名字:

生成的证书:

右键添加网站,这里注意使用"https":

选择刚刚生成的证书:


启动报错:

万维网发布服务 (w3svc) 已停止。除非万维网发布服务正在运行,否则无法启动网站。
解决方案:
- 按下 Win + R,输入
services.msc,回车。 - 在服务列表中找到 "World Wide Web Publishing Service"。
- 如果状态为"已停止",右键点击并选择"启动"。




报错:

ERR_SSL_KEY_USAGE_INCOMPATIBLE
这个错误是 Chrome、Edge 等现代浏览器为了强化安全策略而引入的,根源在于 IIS 管理器生成的默认自签名证书缺少一个关键的密钥用法:DigitalSignature。
以管理员身份打开 Windows PowerShell,运行以下命令:
bash
New-SelfSignedCertificate -FriendlyName "Your Certificate Name" -DnsName "localhost" -KeyUsage DigitalSignature -CertStoreLocation cert:\LocalMachine\My -NotAfter (Get-Date).AddYears(10)

命令参数说明:
-
-FriendlyName "Your Certificate Name":证书的显示名称,可以自定义,例如 "My Dev Certificate"。
-
-DnsName "localhost":这是最重要的参数之一。指定证书要绑定的域名或主机名。如果你是通过 IP 地址(如 127.0.0.1)或具体计算机名访问网站,请务必将 localhost 替换为对应的值。
-
-KeyUsage DigitalSignature:这是修复错误的关键。为证书添加浏览器强制要求的数字签名密钥用法。
-
-CertStoreLocation cert:\LocalMachine\My:将证书安装到本地计算机的"个人"证书存储中,这样 IIS 才能识别并使用它。
-
-NotAfter (Get-Date).AddYears(10):将证书的有效期设置为10年,避免频繁更换的麻烦。
在 IIS 中绑定新证书:


测试:

补充:Hosting Bundle
.NET Core Hosting Bundle 是微软官方提供的一个软件包,专门用于在 Windows 服务器上通过 IIS 托管和运行 ASP.NET Core 应用程序。你可以将它理解为一座桥梁,无缝连接了 ASP.NET Core 应用与 IIS 服务器。
核心组件与作用
这个安装包之所以关键,是因为它集合了让 ASP.NET Core 应用在 IIS 上运行所需的几乎所有核心组件:
| 组件名称 | 主要作用 |
|---|---|
| .NET Core 运行时 (.NET Core Runtime) | 提供了运行 .NET 应用程序所需的基础环境,包括垃圾回收器、即时编译器(JIT)和核心库等。 |
| ASP.NET Core 模块 (ANCM / ASP.NET Core Module) | 这是一个关键的 IIS 模块。它充当了反向代理的角色,负责将来自 IIS 的请求转发给后台的 ASP.NET Core 应用(即 Kestrel 服务器),从而实现了 IIS 与应用的集成。 |
| .NET Core 库 (.NET Core Library) | 提供了 .NET 应用程序运行所需的基础类库支持。 |
主要优势
相比单独安装运行时和其他组件,选择 Hosting Bundle 有几个明显的好处:
- 简化部署流程:你不需要分别安装 .NET 运行时、ASP.NET Core 运行时和 IIS 模块,一个安装包就能搞定所有必备项,大大降低了部署的复杂性。
- 确保兼容与稳定:这个捆绑包由微软官方发布和维护,确保了各个组件之间的版本兼容性,为生产环境的稳定运行提供了保障。
- 自动集成与生命周期管理 :安装后,它会自动在 IIS 中注册
AspNetCoreModuleV2模块。同时,IIS 也能自动检测并管理 ASP.NET Core 应用程序的启动、停止和回收,让运维更省心。
部署与配置要点
在安装和配置时,有几个关键点需要注意:
- 安装顺序很重要 :建议先安装好 IIS,再安装 Hosting Bundle。如果顺序反了,可能会遇到跨域或配置方面的问题,此时通常需要卸载并重新安装 Hosting Bundle。
- 重启 IIS 服务:安装完成后,建议重启 IIS 或整个服务器,以确保所有环境变量和配置更改都已生效。
- 验证安装是否成功 :
- 检查 IIS 模块 :打开 IIS 管理器,点击你的网站,在"模块"功能中,应该能看到名为
AspNetCoreModuleV2的条目。 - 配置应用程序池 :为你的网站创建应用程序池时,在".NET CLR 版本"设置中选择 "无托管代码"。因为 ASP.NET Core 应用在独立的进程中运行,不依赖 IIS 的 .NET 运行时。
- 检查 IIS 模块 :打开 IIS 管理器,点击你的网站,在"模块"功能中,应该能看到名为
- 生产环境与 SDK :在生产服务器上,不需要安装 .NET SDK。SDK 主要用于开发、编译和发布,而 Hosting Bundle 已经包含了运行应用所需的一切。
总的来说,.NET Core Hosting Bundle 是你在 Windows Server + IIS 环境下部署 ASP.NET Core 应用的核心工具。它通过集成运行时的必要组件和关键的 IIS 反向代理模块,让 .NET 应用能够在传统强大的 IIS 服务器上高效、稳定地运行。