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)上操作:

  1. 打开 服务器管理器 → 点击 添加角色和功能

  2. 选择:

    • 服务器角色 → 勾选 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

  1. 确认项目目标框架(.csproj<TargetFramework>

    • ToDo 项目是 net8.0
  2. 下载 .NET 8 ASP.NET Core Hosting Bundle

  3. 以管理员身份运行安装包 → 完成安装

  4. 验证安装:

win+R打开终端并输入:

cmd 复制代码
dotnet --list-runtimes

输出中应包含:

复制代码
Microsoft.NETCore.App 8.0.x
Microsoft.AspNetCore.App 8.0.x

步骤 2:服务器安装 MySQL

设置 root 密码123456 → 默认端口 3306,使用root登录mysql


步骤 3:发布项目

  1. VS2022→视图选项卡→终端→输入:
powershell 复制代码
dotnet publish -c Release -o ./publish
  1. 生成 publish 文件夹,确认包含:

    • ToDo.Razor.dll
    • web.config
    • appsettings.json
    • wwwroot 等资源文件

publish文件夹在本地ToDo路径下,在VS2022中右键解决方案选择在文件资源管理器中打开文件就可以找到

  1. publish 打包成 ZIP 上传(复制粘贴)到服务器C:\inetpub\路径下,新建ToDo(你的项目名称)文件夹,即 C:\inetpub\ToDo\publish.zip

  2. 在服务器上解压到:

    C:\inetpub\ToDo

确保 ToDo.Razor.dll 在根目录


步骤 4:配置数据库连接(确保密码和数据库名字正确)

  1. 编辑 C:\inetpub\ToDo\publish\appsettings.json
json 复制代码
"ConnectionStrings": {
  "DefaultConnection": "server=localhost;port=3306;database=todo;user=root;password=123456;"
}

步骤 5:配置 Windows IIS

win+R输入inetmgr打开IIS管理器

  1. 打开 IIS 管理器网站添加网站

    • 站点名称:ToDo(你的站点名称)

    • 物理路径C:\inetpub\ToDo\publish

    • 绑定

      • 类型:http
      • IP:全部未分配
      • 端口:80
      • 主机名:test2.icode8.net(你的主机名)
  2. 配置应用程序池:

    左侧树状结构打开应用程序池,找到ToDo

    • 右键选择基本设置:.NET CLR 版本无托管代码
    • 右键选择高级设置:找到启动模式AlwaysRunning
    • 应用程序池状态 已启动
  3. 在发布目录下创建日志文件夹(可选):

主要用于报错时日志的输出

复制代码
C:\inetpub\ToDo\publish\logs
  • web.config 中确保:
xml 复制代码
<aspNetCore processPath="dotnet" arguments=".\ToDo.Razor.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="InProcess" />

步骤 6:测试网站

  1. 浏览器访问:

    http://test2.icode8.net(你的主机名)

  2. 如果出现 500 错误:

    • 查看 logs 下 stdout 日志
    • 查看 事件查看器 → 应用程序
    • 命令行直接测试:
cmd 复制代码
cd C:\inetpub\ToDo\publish
dotnet ToDo.Razor.dll
  1. 常见问题:

    • 500.31 → 缺少 Hosting Bundle / .NET Runtime
    • 500.30 → 数据库配置错误 / 依赖缺失

步骤 7:优化与维护

  1. 配置 HTTPS → 申请证书 / 使用 IIS 绑定 SSL

  2. 定期备份数据库

  3. 配置 IIS 日志 / stdout 日志监控网站运行

  4. 发布新版本:

    • 本地重新 dotnet publish
    • 上传覆盖 C:\inetpub\ToDo\publish
    • IIS 重启

💡 关键注意事项

  • 确保服务器上有 对应版本的 .NET Hosting Bundle
  • appsettings.json 连接字符串必须指向服务器数据库
  • 发布目录里必须有 ToDo.Razor.dllweb.config
  • 应用程序池必须 无托管代码 + AlwaysRunning
相关推荐
脑电信号要分类8 小时前
将多张图片拼接成一个pdf文件输出
pdf·c#·apache
njsgcs8 小时前
c# solidworks 折弯系数检查
开发语言·c#
格林威10 小时前
工业相机图像采集:Grab Timeout 设置建议——拒绝“假死”与“丢帧”的黄金法则
开发语言·人工智能·数码相机·计算机视觉·c#·机器视觉·工业相机
唐青枫10 小时前
C#.NET SignalR + Redis Backplane 深入解析:多节点部署与跨实例消息同步
c#·.net
FL16238631291 天前
[C#][winform]segment-anything分割万物部署onnx模型一键抠图演示
开发语言·c#
love530love1 天前
OpenClaw 手机直连配置全流程
人工智能·windows·python·智能手机·c#·agent·openclaw
bcbobo21cn1 天前
C# byte类型和byte数组的使用
开发语言·c#·字节数组·byte类型
月巴月巴白勺合鸟月半1 天前
一次PDF文件的处理(一)
pdf·c#
大鹏说大话1 天前
Java 锁膨胀机制深度解析:从偏向锁到重量级锁的进化之路
开发语言·c#
武藤一雄1 天前
WPF处理耗时操作的7种方法
microsoft·c#·.net·wpf