【c#】 Web Deploy一键发布,IIS部署全流程
项目ASP.NET Core 8.0 Web API服务器阿里云 Windows Server IIS部署方式VS Web Deploy 一键发布一、前置准备1.1 本地环境项说明项目框架.NET 8.0开发工具Visual Studio发布方式Web Deploy直接推送到远程 IIS1.2 服务器环境项说明操作系统Windows Server阿里云公网 IPXXXXWeb 服务器IIS已安装1.3 代码调整Program.cs中 Swagger 原本只在开发环境启用// 修改前if(app.Environment.IsDevelopment()){app.UseSwagger();app.UseSwaggerUI();}// 修改后去掉环境判断生产也可见app.UseSwagger();app.UseSwaggerUI();二、服务器端安装与配置2.1 安装 .NET 8 Hosting Bundle下载地址https://dotnet.microsoft.com/zh-cn/download/dotnet/8.0注意Hosting Bundle 不是独立板块它在ASP.NET Core 运行时那一行的链接里找 “Hosting Bundle” 这个小链接。安装时选最新版 8.0.29安装完成后重启 IISiisreset2.2 安装 IIS 管理服务Management ServiceWeb Deploy 需要管理服务来接收远程发布请求。Install-WindowsFeatureWeb-Mgmt-Service2.3 安装 Web Deploy下载https://www.iis.net/downloads/microsoft/web-deploy选Web Deploy 4.0安装时选择更改Change务必勾选所有子组件尤其是IIS Deployment Handler否则 msdeploy 处理器不会注册到 IIS。2.4 启用远程连接打开 IIS 管理器左侧选中服务器节点最顶层双击管理服务先点右侧停止勾选启用远程连接端口保持默认8172点右侧应用→启动2.5 放行端口Windows 防火墙添加入站规则放行 TCP 端口8172和8080站点端口。阿里云安全组在阿里云控制台 → 安全组 → 入方向规则添加端口协议用途8080TCP站点访问8172TCPWeb Deploy 远程发布2.6 创建 IIS 站点设置项值站点名称JpaasPrinter物理路径C:\inetpub\wwwroot\JpaasPrinter绑定端口8080应用程序池 .NET CLR 版本无托管代码托管管道模式集成2.7 设置文件夹权限站点物理路径如C:\inetpub\wwwroot\JpaasPrinter需要让 IIS 应用池账户读取。右键文件夹 → 属性 → 安全 → 编辑 → 添加IIS AppPool\JpaasPrinter权限勾选读取和执行、列出文件夹内容、读取。三、VS 发布配置3.1 配置发布配置文件右键项目 →发布→Web 服务器 (IIS)→Web 部署。字段填写内容服务器XXX站点名称JpaasPrinter必须和 IIS 里完全一致目标 URLhttp://XXX:8080用户名Administrator密码服务器 Administrator 密码3.2 允许不受信任的证书Windows Server 的 IIS 管理服务使用自签名证书VS 默认不信任。两种修复方式方式 A推荐编辑Properties\PublishProfiles\IISProfile.pubxml添加AllowUntrustedCertificatetrue/AllowUntrustedCertificate方式 B在 VS 发布页面 → 更多连接选项 → 勾选允许不受信任的证书。四、遇到的问题及解决问题 1找不到 Hosting Bundle 下载现象.NET 8.0 下载页面没有独立叫 “Hosting Bundle” 的板块。原因Hosting Bundle 的下载链接藏在ASP.NET Core 运行时那一行的小字链接里。解决展开某个版本号在ASP.NET Core 运行时行中找到 “Hosting Bundle” 链接或直接访问https://dotnet.microsoft.com/zh-cn/download/dotnet/thank-you/runtime-aspnetcore-8.0.29-windows-hosting-bundle-installer问题 2IIS 里看不到管理服务现象装了 Web Deploy 但 IIS 管理器里没有出现管理服务功能。原因管理服务Management Service是 IIS 的一个独立功能不随 Web Deploy 安装。解决Install-WindowsFeatureWeb-Mgmt-Service问题 3VS 验证连接报 404现象Web 部署任务失败。远程服务器返回了错误 (404) 未找到。原因两个可能管理服务启用远程连接没打勾Web Deploy 的 msdeploy.axd 处理器没注册到 IIS排查# 检查 WMSVC 服务和 IIS 管理服务状态Get-ServiceWMSVCGet-WindowsFeatureWeb-Mgmt-ServiceTest-NetConnection8.135.xx.xx-Port 8172# 检查 msdeploy 处理器Get-WebHandler|Where-Object{$_.Name-like*msdeploy*}解决如端口不通 → 检查防火墙和安全组如管理服务没启用 → IIS 管理器里勾选启用远程连接如处理器丢失 → 修复 Web Deploy 安装确保勾选 IIS Deployment Handler问题 4证书验证失败现象ERROR_CERTIFICATE_VALIDATION_FAILED原因IIS 管理服务使用自签名证书VS 不信任。解决在发布配置文件中添加AllowUntrustedCertificatetrue/AllowUntrustedCertificate五、发布时的行为说明文件替换机制ASP.NET Core 使用影子复制IIS 启动时会从publish目录复制文件到临时目录再执行原始文件不被锁定。发布时 Web Deploy 可以直接覆盖原始文件不会被文件使用中拦住。覆盖完成后ASP.NET Core Module 检测到文件变化自动回收旧进程用新文件重新启动。站点是否停机发布过程中站点不会主动停止。文件替换后新进程自动启动切换期间可能 1-3 秒请求失败502/503流量小的项目无需在意。六、快速参考常用命令# 重启 IISiisreset# 检查管理服务状态Get-ServiceWMSVC# 检查 IIS 站点列表Get-Website|Select-ObjectName,PhysicalPath,State# 检查端口连通性Test-NetConnection8.135.xx.xx-Port 8172Test-NetConnection8.135.xx.xx-Port 8080# 检查 Web Deploy 处理器Get-WebHandler|Where-Object{$_.Name-like*msdeploy*}端口清单端口协议用途需放行位置8080TCP网站访问阿里云安全组 Windows 防火墙8172TCPWeb Deploy 发布阿里云安全组 Windows 防火墙

相关新闻

LangChain+LangGraph+MCP:AI Agent三层架构实战解析

LangChain+LangGraph+MCP:AI Agent三层架构实战解析

1. 项目概述:AI Agent开发的三层架构革命去年在开发智能客服系统时,我尝试过直接调用大语言模型API,结果遇到了响应延迟、上下文丢失和任务连续性差等问题。直到发现了LangChainLangGraphMCP这个三层架构,才真正实现了生产级AI Ag…

2026/10/7 10:22:45 阅读更多 →
在Python项目中快速接入Taotoken的多模型API服务

在Python项目中快速接入Taotoken的多模型API服务

在Python项目中快速接入Taotoken的多模型API服务 对于需要集成AI能力的Python后端开发者而言,直接对接多个不同厂商的模型API往往意味着繁琐的密钥管理、差异化的调用接口以及分散的成本监控。Taotoken平台通过提供OpenAI兼容的HTTP API,将多家主流模型…

2026/10/14 11:37:02 阅读更多 →
Android随笔-Activity

Android随笔-Activity

一、Activity 是什么 Activity 是 Android 四大组件(Activity、Service、BroadcastReceiver、ContentProvider)中唯一负责与用户交互的组件。它提供了一个窗口(Window),用于绘制 UI 并接收用户的触摸、按键等输入事件。…

2026/10/6 3:53:12 阅读更多 →

最新新闻

杂交瘤HAT筛选后集落稀疏怎么办?从融合效率、HGPRT到铺板密度的7项排查

杂交瘤HAT筛选后集落稀疏怎么办?从融合效率、HGPRT到铺板密度的7项排查

摘要: 杂交瘤细胞融合后进入HAT选择培养,是单克隆抗体制备流程中非常关键的一步,但实验中经常出现集落稀疏、孔内细胞逐渐消失甚至整块板无细胞存活等问题。不同失败表现背后的原因并不相同:融合后24-48小时即出现大量细胞碎片&am…

2026/10/15 3:09:36 阅读更多 →
杂交瘤HAT筛选失败怎么排查?融合、HGPRT、培养基和铺板密度完整整理

杂交瘤HAT筛选失败怎么排查?融合、HGPRT、培养基和铺板密度完整整理

摘要: 杂交瘤HAT筛选常出现集落稀疏、细胞存活差的问题,成因覆盖细胞、培养基、操作等多个环节。本文区分两个发生阶段,梳理排查要点与验证方法,为单克隆抗体制备实验提供参考。 关键词:杂交瘤、HAT筛选、促杂交瘤生长…

2026/10/15 3:09:36 阅读更多 →
免费开源 Angular 9 后台管理仪表盘模板:Start Bootstrap SB Admin Angular 技术详解

免费开源 Angular 9 后台管理仪表盘模板:Start Bootstrap SB Admin Angular 技术详解

前端文档 【免费下载链接】startbootstrap A library of free and open source Bootstrap themes and templates 项目地址: https://gitcode.com/gh_mirrors/st/startbootstrap 点击查看 免费下载 SB Admin Angular 是 Start Bootstrap 推出的首款 Angular 版本后台…

2026/10/15 3:09:36 阅读更多 →
wiliwili 终极指南:把游戏机变成全平台 B 站播放器

wiliwili 终极指南:把游戏机变成全平台 B 站播放器

wiliwili 终极指南:把游戏机变成全平台 B 站播放器 【免费下载链接】wiliwili 第三方B站客户端,目前可以运行在PC全平台、PSVita、PS4 、Xbox 和 Nintendo Switch上 项目地址: https://gitcode.com/GitHub_Trending/wi/wiliwili wiliwili 是一款专…

2026/10/15 3:09:36 阅读更多 →
Path of Building:Path of Exile 离线构建规划工具,帮你算清 DPS

Path of Building:Path of Exile 离线构建规划工具,帮你算清 DPS

Path of Building:Path of Exile 离线构建规划工具,帮你算清 DPS 【免费下载链接】PathOfBuilding Offline build planner for Path of Exile. 项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding 还在对着攻略表手动算伤害&#…

2026/10/15 3:09:36 阅读更多 →
笑脸与口罩识别的工业级落地:从像素统计到人机意图理解

笑脸与口罩识别的工业级落地:从像素统计到人机意图理解

1. 这不是玩具项目:笑脸与口罩识别背后的真实业务切口“笑脸识别,口罩识别”——光看标题,很多人第一反应是:这不就是个课堂Demo?调用OpenCV读个摄像头,加两行cv2.CascadeClassifier,再套个预训…

2026/10/15 3:08:36 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →