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
相关推荐
A_nanda1 天前
c# MOdbus rto读写串口,如何不相互影响
算法·c#·多线程
码云数智-园园1 天前
使用 C# 将 PowerPoint 演示文稿高效转换为 PDF 格式
c#
PfCoder1 天前
WinForm真入门(23)---PictureBox 控件详细用法
开发语言·windows·c#·winform
gc_22991 天前
C#学习调用OpenMcdf模块解析ole数据的基本用法(1)
c#·ole·openmcdf
MM_MS1 天前
Halcon图像点运算、获取直方图、直方图均衡化
图像处理·人工智能·算法·目标检测·计算机视觉·c#·视觉检测
老骥伏枥~1 天前
C# 控制台:Console.ReadLine / WriteLine
开发语言·c#
PfCoder2 天前
C#中定时器之System.Timers.Timer
c#·.net·visual studio·winform
csdn_aspnet2 天前
ASP.NET Core 中的依赖注入
后端·asp.net·di·.net core
人工智能AI技术2 天前
【C#程序员入门AI】本地大模型落地:用Ollama+C#在本地运行Llama 3/Phi-3,无需云端
人工智能·c#