当前位置: 首页 > news >正文

ASP.NET CORE部署IIS的三种方式

ASP.NET Core 部署方式对比

本文档对比了三种常见的 ASP.NET Core 应用(如你的 DingTalkApproval 项目)部署到 Windows 10 上 IIS 服务器的方式:dotnet publish(手动部署)、Web Deploy(直接发布到 IIS)、Web Deploy 包(生成包后导入)。每种方式有其适用场景、优点和缺点。

1. 使用 dotnet publish 手动部署

描述

  • 使用 dotnet publish 命令(或 Visual Studio 的文件夹发布)生成 Release 版本,手动将文件部署到 IIS 服务器。
  • 示例命令:dotnet publish -c Release -o c:\publish
  • 在 Visual Studio 中:右键项目 -> 发布 -> 文件夹 -> C:\publish

流程

  1. 运行 dotnet publish 或通过 Visual Studio 发布到本地文件夹(如 C:\publish)。
  2. 将发布文件复制到 IIS 服务器的目标目录(如 C:\PUBLISH\WEB)。
  3. 配置 IIS 站点:
    • 创建或选择一个站点,指向该文件夹。
    • 将应用程序池设置为“无托管代码”,使用集成模式。
  4. 通过访问站点并检查日志验证部署。

优点

  • 灵活性高:完全控制发布文件和 IIS 配置。
  • 无需额外工具:服务器只需安装 .NET 运行时和 ASP.NET Core Hosting Bundle。
  • 适合测试:适合本地开发或小型项目。

缺点

  • 手动操作多:需要手动复制文件和配置 IIS,容易出错。
  • 耗时:相比自动化方式步骤更多。
  • 易出错:配置(如权限、应用程序池)需手动设置。

2. Web Deploy(直接发布到 IIS)

描述

  • 通过 Visual Studio 使用 Web Deploy 协议直接将应用发布到目标 IIS 服务器。
  • Visual Studio 自动完成文件传输和 IIS 配置。

流程

  1. 在 Visual Studio 发布向导中选择“Web 服务器(IIS)”。
  2. 配置目标服务器:
    • 输入服务器地址(IP 或域名)、站点名称、凭据。
    • 验证连接。
  3. 点击“发布”,Visual Studio 编译项目并通过 Web Deploy 传输文件到 IIS 服务器。
  4. Web Deploy 自动配置 IIS(如应用程序池、绑定等)。

优点

  • 自动化程度高:一键发布,自动完成文件传输和配置。
  • 效率高:无需手动操作,适合快速部署。
  • 适合生产环境:减少人为错误。

缺点

  • 网络依赖:需要开发机与目标服务器实时连接。
  • 环境要求:目标服务器必须安装 Web Deploy 并启用 IIS 管理服务。
  • 灵活性低:依赖实时连接,网络不稳定可能导致失败。

3. Web Deploy 包(生成包后导入)

描述

  • Visual Studio 生成一个 Web Deploy 包(.zip 文件,如 DingTalkApproval.zip),包含应用文件和部署配置,之后手动导入到 IIS。
  • 在 IIS 管理器中通过“导入应用程序”功能完成部署。

流程

  1. 在 Visual Studio 发布向导中选择“Web 部署包”。
  2. 指定包保存路径(如 C:\DingTalkApproval.zip)。
  3. 点击“发布”,生成包含应用文件和配置的 .zip 文件。
  4. 将包传输到目标服务器,在 IIS 管理器中通过“部署” -> “导入应用程序”完成部署。

优点

  • 离线部署:生成包后无需实时连接,可随时导入。
  • 灵活性高:包可分发、存档,适合团队协作或批量部署。
  • 标准化:包内可预定义配置(如应用程序池),便于统一部署。

缺点

  • 额外步骤:需要手动导入,相比直接发布多一步操作。
  • 环境要求:目标服务器仍需支持 Web Deploy。
  • 前期准备:生成包可能需要额外配置(如通过 Visual Studio)。

对比总结

方面dotnet publish(手动部署)Web Deploy(直接发布)Web Deploy 包(生成包后导入)
操作方式手动发布和配置一键直接发布到 IIS先生成包,再手动导入
自动化程度低,手动操作多高,自动完成部署中等,手动导入但配置自动化
网络要求无需实时连接需要实时连接无需实时连接,离线传输即可
灵活性高,可完全控制文件和配置较低,依赖实时连接较高,可存档、分发、延迟部署
适用场景本地测试、小型项目快速部署到测试/生产环境开发者与运维分离、批量部署
环境依赖.NET 运行时、Hosting Bundle需安装 Web Deploy需支持 Web Deploy 导入

相关文章:

  • 【Android Compose】焦点管理
  • 使用 Truffle 和 Ganache 搭建本地以太坊开发环境并部署一个简单智能合约
  • Android学习总结之ANR问题
  • 阿里云VS AWS中国区:ICP备案全攻略与常见误区解析
  • QT对话框及其属性
  • 电机试验平台:实现精准测试与优化设计
  • 长尾词驱动SEO优化实战
  • Go context 包的底层实现原理
  • IntelliJ IDEA修改实体类成员变量的名称(引入了该实体类的全部文件也会自动更新变量的名称)
  • 基于 Nginx 的 WebSocket 反向代理实践
  • 探索 AI 在文化遗产保护中的新使命:数字化修复与传承
  • 使用css修饰网页元素
  • 认识哈希以及哈希表的模拟实现
  • Unity中文件上传以及下载,获取下载文件大小的解决方案
  • Ubuntu下安装vsode+qt搭建开发框架(一)
  • 智慧园区IOT项目与AI时代下的机遇 - Java架构师面试实战
  • 设计一个关键字统计程序:利用HashMap存储关键字统计信息,对用户输入的关键字进行个数统计。
  • P3309 [SDOI2014] 向量集 Solution
  • 浏览器界面无显示,提示“代理服务器可能有问题”,这是怎么回事呢?
  • Windows 安装 Neo4j 教程
  • 流浪猫给车主造成困扰,长春一小区拟投药应对?律师:此举欠妥
  • 秦洪看盘|浮现新预期,存量资金积极调仓
  • 酒店就“保洁员调包住客港币”致歉,称希望尽早达成解决方案
  • 持续更新丨伊朗官员:港口爆炸事件已致5人死亡
  • 阿曼外交大臣:伊美下一轮谈判暂定5月3日举行
  • 特朗普说克里米亚将留在俄罗斯,泽连斯基:绝不承认