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
相关推荐
Scout-leaf3 天前
WPF新手村教程(三)—— 路由事件
c#·wpf
用户298698530143 天前
程序员效率工具:Spire.Doc如何助你一键搞定Word表格排版
后端·c#·.net
mudtools4 天前
搭建一套.net下能落地的飞书考勤系统
后端·c#·.net
玩泥巴的4 天前
搭建一套.net下能落地的飞书考勤系统
c#·.net·二次开发·飞书
唐宋元明清21885 天前
.NET 本地Db数据库-技术方案选型
windows·c#
lindexi5 天前
dotnet DirectX 通过可等待交换链降低输入渲染延迟
c#·directx·d2d·direct2d·vortice
qq_454245035 天前
基于组件与行为的树状节点系统
数据结构·c#
bugcome_com5 天前
C# 类的基础与进阶概念详解
c#
雪人不是菜鸡5 天前
简单工厂模式
开发语言·算法·c#
铸人5 天前
大数分解的Shor算法-C#
开发语言·算法·c#