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 导入
相关推荐
brzhang17 分钟前
代码即图表:dbdiagram.io让数据库建模变得简单高效
前端·后端·架构
Jamesvalley22 分钟前
【Django】新增字段后兼容旧接口 This field is required
后端·python·django
秋野酱34 分钟前
基于 Spring Boot 的银行柜台管理系统设计与实现(源码+文档+部署讲解)
java·spring boot·后端
獨枭1 小时前
Spring Boot 连接 Microsoft SQL Server 实现登录验证
spring boot·后端·microsoft
shanzhizi1 小时前
springboot入门-controller层
java·spring boot·后端
八股文领域大手子1 小时前
如何给GitHub项目提PR(踩坑记录
大数据·elasticsearch·github
泯泷2 小时前
探索DeepWiki:开发者的代码知识库利器
github·openai·ai编程
电商api接口开发2 小时前
ASP.NET MVC 入门指南三
后端·asp.net·mvc
声声codeGrandMaster2 小时前
django之账号管理功能
数据库·后端·python·django
我的golang之路果然有问题3 小时前
案例速成GO+redis 个人笔记
经验分享·redis·笔记·后端·学习·golang·go