ASP.NET Core 应用部署到 IIS 完全指南
2025-07-06 04:16:26作者:滑思眉Philip
前言
在 Windows 服务器环境中,IIS (Internet Information Services) 是最常用的 Web 服务器之一。本文将详细介绍如何将 ASP.NET Core 应用部署到 IIS 服务器上,涵盖从环境准备到最终部署的全过程。
环境准备
服务器端要求
-
操作系统:Windows Server 2012 或更高版本
-
IIS 角色:确保已安装 Web Server (IIS) 服务器角色
- 通过"服务器管理器"添加角色和功能
- 必须包含以下功能:
- 静态内容
- 默认文档
- 目录浏览
- HTTP 错误
- ASP.NET(如果使用 WebForms 或 MVC)
- ISAPI 扩展
- ISAPI 过滤器
-
.NET Core 托管捆绑包:这是 ASP.NET Core 应用在 IIS 中运行的关键组件
- 包含 .NET Core 运行时、.NET Core 库和 ASP.NET Core 模块
- 安装后需要重启服务器或执行以下命令:
net stop was /y net start w3svc
开发环境要求
- .NET Core SDK:与你的应用版本匹配的 SDK
- 开发工具:Visual Studio 或 VS Code(可选)
IIS 站点配置
创建应用文件夹
- 在服务器上选择一个位置创建应用文件夹
- 例如:
C:\inetpub\wwwroot\MyAspNetCoreApp
- 确保该文件夹有适当的权限(稍后会详细介绍)
- 例如:
配置 IIS 站点
- 打开 IIS 管理器
- 在"连接"面板中,右键点击"站点"文件夹
- 选择"添加网站"
- 填写配置信息:
- 站点名称:例如"MyAspNetCoreApp"
- 物理路径:指向刚才创建的文件夹
- 绑定:
- 类型:http 或 https
- IP 地址:通常选择"全部未分配"
- 端口:80(http)或 443(https)
- 主机名:如果有域名则填写
安全提示:避免使用顶级通配符绑定(如
http://*:80/
),这会带来安全风险。应使用明确的域名。
应用池配置
- 为站点创建专用应用池
- 设置.NET CLR 版本为"无托管代码"
- 托管管道模式:集成
- 身份验证:根据需要配置
应用发布与部署
应用发布方式
使用 Visual Studio 发布
- 右键点击项目 → 选择"发布"
- 选择"文件夹"发布目标
- 设置发布路径:
- 可以直接发布到服务器共享文件夹
- 或发布到本地文件夹后手动复制到服务器
使用 .NET CLI 发布
dotnet publish --configuration Release
发布后的文件位于 bin/Release/{TARGET FRAMEWORK}/publish
目录下。
文件部署
- 将发布文件夹中的所有内容复制到 IIS 站点文件夹
- 确保文件权限正确:
- 应用池用户(默认为 ApplicationPoolIdentity)需要读取和执行权限
- 如果应用需要写入日志或上传文件,还需要写入权限
常见问题排查
502.5 进程失败错误
- 检查是否安装了正确版本的 .NET Core 托管捆绑包
- 确认应用池的.NET CLR版本设置为"无托管代码"
- 检查事件查看器中的详细错误信息
403 禁止访问
- 检查文件夹权限
- 确认默认文档设置正确
- 检查应用池身份是否有足够权限
404 未找到
- 检查应用是否已正确发布到目标文件夹
- 确认 IIS 模块映射正确
- 检查 web.config 文件是否存在且配置正确
高级配置建议
数据保护配置
对于生产环境,建议配置数据保护密钥持久化:
<configuration>
<system.web>
<machineKey validationKey="..." decryptionKey="..." validation="SHA1" decryption="AES" />
</system.web>
</configuration>
HTTPS 配置
- 获取并安装 SSL 证书
- 在 IIS 中配置 HTTPS 绑定
- 强制 HTTPS 重定向(在 Startup.cs 中配置)
性能优化
- 启用动态内容压缩
- 配置输出缓存
- 调整应用池回收设置
结语
通过本文的步骤,你应该已经成功将 ASP.NET Core 应用部署到 IIS 服务器上。IIS 提供了强大的托管能力,结合 ASP.NET Core 的跨平台特性,可以构建高性能、可靠的 Web 应用。
对于生产环境,请务必考虑安全性配置,包括但不限于 HTTPS、数据保护和适当的权限设置。定期检查服务器日志和应用性能,确保应用稳定运行。