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
相关推荐
m5655bj11 小时前
通过 C# 将 RTF 文档转换为图片
开发语言·c#
MM_MS12 小时前
WinForm+C#小案例--->写一个记事本程序
开发语言·计算机视觉·c#·visual studio
浪客川14 小时前
高效日志分离器:一键筛选关键信息
开发语言·windows·c#
小熊熊知识库14 小时前
C# EF.core 介绍以及高性能使用
开发语言·c#
雨疏风骤124015 小时前
【FreeRTOS】任务、任务状态
开发语言·stm32·c#·rtos
️公子17 小时前
传奇游戏集成系统
游戏·c#
玩泥巴的17 小时前
强的飞起的 Roslyn 编译时代码生成,实现抽象类继承与依赖注入的自动化配置
c#·.net·代码生成·roslyn
mudtools17 小时前
强的飞起的 Roslyn 编译时代码生成,实现抽象类继承与依赖注入的自动化配置
c#·.net
️公子18 小时前
无人直播系统-黑客主题
人工智能·c#·visual studio
Q1808095119 小时前
开启图像处理之旅:C# 与 OpenCV 的奇妙结合
asp.net