Windows Server 2022 + IIS + .NET 8 + MySQL 部署手册
Windows Server 2022 + IIS + .NET 8 + MySQL 部署手册
前提条件
- 服务器:Windows Server 2022
- 远程访问:RDP/管理员权限
- 项目:ToDo.Razor (ASP.NET Core 8.0 Web 项目)
- 数据库:MySQL(需要在服务器上安装)
在服务器打开时出现的服务器管理器(IIS)上操作:
-
打开 服务器管理器 → 点击 添加角色和功能
-
选择:
-
服务器角色 → 勾选 Web Server (IIS)
-
在 角色服务 里额外勾选:
- Web Server → Application Development → ASP.NET 4.8
- Web Server → Security → Request Filtering、Basic Authentication、Windows Authentication(可选可不选)
- Management Tools → IIS Management Console
-
步骤 1:在服务器上安装 .NET Hosting Bundle
-
确认项目目标框架(
.csproj里<TargetFramework>)- ToDo 项目是 net8.0
-
下载 .NET 8 ASP.NET Core Hosting Bundle
- 官方下载:.NET 8 Hosting Bundle
- 文件名类似:
dotnet-hosting-8.0.x-win.exe
-
以管理员身份运行安装包 → 完成安装
-
验证安装:
win+R打开终端并输入:
dotnet --list-runtimes
输出中应包含:
Microsoft.NETCore.App 8.0.x
Microsoft.AspNetCore.App 8.0.x
步骤 2:服务器安装 MySQL
- MySQL 8.0.43安装指南
设置 root 密码123456 → 默认端口 3306,使用root登录mysql
步骤 3:发布项目
- VS2022→视图选项卡→终端→输入:
dotnet publish -c Release -o ./publish
-
生成
publish文件夹,确认包含:ToDo.Razor.dllweb.configappsettings.jsonwwwroot等资源文件
publish文件夹在本地ToDo路径下,在VS2022中右键解决方案选择
在文件资源管理器中打开文件就可以找到
-
将
publish打包成 ZIP 上传(复制粘贴)到服务器C:\inetpub\路径下,新建ToDo(你的项目名称)文件夹,即C:\inetpub\ToDo\publish.zip -
在服务器上解压到:
C:\inetpub\ToDo
确保 ToDo.Razor.dll 在根目录
步骤 4:配置数据库连接(确保密码和数据库名字正确)
- 编辑
C:\inetpub\ToDo\publish\appsettings.json:
"ConnectionStrings": {"DefaultConnection": "server=localhost;port=3306;database=todo;user=root;password=123456;"
}
步骤 5:配置 Windows IIS
win+R输入
inetmgr打开IIS管理器
-
打开 IIS 管理器 → 网站 → 添加网站
-
站点名称:ToDo(你的站点名称)
-
物理路径:
C:\inetpub\ToDo\publish -
绑定:
- 类型:http
- IP:全部未分配
- 端口:80
- 主机名:
test2.icode8.net(你的主机名)
-
-
配置应用程序池:
左侧树状结构打开应用程序池,找到ToDo- 右键选择基本设置:
.NET CLR 版本→ 无托管代码 - 右键选择高级设置:找到启动模式 → AlwaysRunning
- 应用程序池状态 已启动
- 右键选择基本设置:
-
在发布目录下创建日志文件夹(可选):
主要用于报错时日志的输出
C:\inetpub\ToDo\publish\logs
web.config中确保:
<aspNetCore processPath="dotnet" arguments=".\ToDo.Razor.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="InProcess" />
步骤 6:测试网站
- 浏览器访问:
http://test2.icode8.net(你的主机名)
-
如果出现 500 错误:
- 查看
logs下 stdout 日志 - 查看 事件查看器 → 应用程序
- 命令行直接测试:
- 查看
cd C:\inetpub\ToDo\publish
dotnet ToDo.Razor.dll
-
常见问题:
- 500.31 → 缺少 Hosting Bundle / .NET Runtime
- 500.30 → 数据库配置错误 / 依赖缺失
步骤 7:优化与维护
-
配置 HTTPS → 申请证书 / 使用 IIS 绑定 SSL
-
定期备份数据库
-
配置 IIS 日志 / stdout 日志监控网站运行
-
发布新版本:
- 本地重新
dotnet publish - 上传覆盖
C:\inetpub\ToDo\publish - IIS 重启
- 本地重新
💡 关键注意事项
- 确保服务器上有 对应版本的 .NET Hosting Bundle
appsettings.json连接字符串必须指向服务器数据库- 发布目录里必须有 ToDo.Razor.dll 和 web.config
- 应用程序池必须 无托管代码 + AlwaysRunning
