文章元信息
- 作者:刚子
- 系列名称:.NET 8 现代Web开发实战指南
- 原文链接:https://www.codeobservatory.cn/post/dotnet-8-web-development-part9-windows-cloud-server-iis-deployment
- 关键词:Windows Server, IIS 部署, .NET 8 发布, Web 部署, 服务器运维
- 摘要:本文承接 Docker 部署篇,针对传统企业环境,详细讲解如何在 Windows Server 上通过 IIS 部署 .NET 8 应用。涵盖发布配置、运行时安装、站点搭建及权限避坑指南。
一、前言:传统力量的回归
在上一篇中,我们体验了 Docker 的便捷。但刚子知道,很多小伙伴(特别是传统行业)面对的依然是 Windows Server 服务器。如果你不想折腾 Linux 命令,也不想引入 Docker 的学习成本,那么 IIS (Internet Information Services) 依然是那个最稳健、最亲切的选择。
今天我们就回到熟悉的 Windows 界面,完成一次传统但高效的部署。
二、第一步:发布程序包(本地操作)
在本地开发机器上,我们需要把代码编译成可以直接运行的文件。
- 右键点击你的项目(
MyTodoApp),选择 “发布 (Publish)”。 - 选择 “文件夹” 作为发布目标。
- 点击 “显示所有设置”:
- 配置:选择
Release(生产环境必须用 Release)。 - 目标框架:
net8.0。 - 部署模式:
框架依赖。 - 目标运行时:
win-x64(关键点!必须是 Windows 64位)。
- 配置:选择
- 点击 “发布”。
完成后,会在项目的 bin/Release/net8.0/publish 目录下生成一堆文件。这就是你要上传的“安装包”。
三、第二步:服务器环境准备(服务器操作)
通过远程桌面连接到你的 Windows 云服务器。
3.1 安装 .NET 8 Runtime
服务器必须安装 .NET 8 运行时。
- 下载地址:.NET 8.0 Runtime
- 刚子敲黑板:一定要下载 Hosting Bundle(托管包)!这会顺便装好 IIS 的 ASP.NET Core 模块,这是 IIS 运行 .NET Core 的关键!
3.2 启用 IIS
- 打开服务器管理器 -> 添加角色和功能。
- 在“服务器角色”里勾选 Web 服务器 (IIS)。
四、第三步:上传与配置(服务器操作)
4.1 上传文件
在服务器 C 盘下新建一个文件夹,例如 C:\MyWeb\MyTodoApp。
将第一步本地发布生成的文件,全部复制到这个服务器目录里。
4.2 IIS 创建站点
- 打开 IIS 管理器。
- 右键“网站” -> 添加网站。
- 网站名称:
MyTodoApp。 - 物理路径:指向刚才的
C:\MyWeb\MyTodoApp。 - 端口:
80(如果没有其他网站占用)。
- 网站名称:
- 点击确定。
【配图建议】 内容:IIS 添加网站对话框截图,展示物理路径和端口设置。 Alt文本:IIS 添加网站配置界面截图。
五、关键避坑:权限设置
这是 90% 新手在 Windows 部署时遇到“500 内部错误”的原因。
IIS 默认的运行账号(IIS_IUSRS)需要有权限读取你网站的文件。
- 找到
C:\MyWeb\MyTodoApp文件夹。 - 右键 -> 属性 -> 安全 -> 编辑 -> 添加。
- 输入
IIS_IUSRS,点击“检查名称”,确定。 - 赋予该组 “读取和执行” 权限。
刚子小贴士:
如果需要写日志,记得单独给日志文件夹 IIS_IUSRS 的 “写入” 权限。
六、验证与常见问题
在 IIS 管理器中,选中你的网站,点击“浏览网站”。如果能看到 Swagger 页面,恭喜部署成功!
常见报错 500.19:通常是没装 Hosting Bundle 或文件权限问题。 外网访问不了:去云服务商控制台,在 “安全组” 里放行 80 端口。
七、总结与预告
Windows IIS 部署虽然传统,但对于内部管理系统来说,它依然是目前最高效的方式。图形化的界面大大降低了运维门槛。
接下来,我们将挑战很多新手害怕,但也是互联网公司最主流的方案——Linux 部署。那才是架构师真正展现技术实力的舞台。