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

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 导入
http://www.xdnf.cn/news/2210.html

相关文章:

  • 第14节:传统图像特征提取 - 形状特征(HOG、SIFT与SURF)
  • 【fork初体验】
  • 数据结构手撕--【堆】
  • 【LeetCode】11.盛最多水的容器
  • 系列位置效应——AI与思维模型【80】
  • 鸿蒙代码@Builder
  • 关于调度策略的系统性解析与物流机器人应用实践
  • Universal Value Function Approximators 论文阅读(强化学习,迁移?)
  • 介绍常用的退烧与消炎药
  • 【Flume 】Windows安装步骤、配置环境
  • Llama factory如何全参数微调 Qwen2.5-7B-Instruct 模型并导入Ollama推理(详细版)
  • 大一下第一次考核题解
  • Linux文件目录操作实战
  • 【C++】15. 模板进阶
  • 【含文档+PPT+源码】基于Python的美食数据的设计与实现
  • llama factory 命令行推理流程
  • MUC基本知识
  • 电子电器架构 --- 乘用车电气/电子架构开发的关键挑战与应对策略
  • Shell编程之正则表达式
  • c++弹窗
  • threejs 零基础学习day01
  • 【补题】Codeforces Global Round 20 F1. Array Shuffling
  • Python循环中断:break和continue,循环else语法,综合案例
  • 一、人类社会结构的根本逻辑
  • Cribl 上传lookup 表,传入数据进event
  • 计算机网络的五层结构(物理层、数据链路层、网络层、传输层、应用层)到底是什么?
  • 揭开人工智能的神秘面纱:从概念到人工神经网络
  • Spring和Spring Boot集成MyBatis的完整对比示例,包含从项目创建到测试的全流程代码
  • 数据库系统概论(四)关系操作,关系完整性与关系代数
  • springboot集成MyBatis Generator快速开发