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

asp.net core项目部署到iis每次更新都提示被占用需要停止网站才可以的问题解决

前言

就是asp.net core打包的项目,都是直接发布复制到iis中,但是更新的时候需要停止掉iis,才能更新,否则会报应用程序正在被占用的问题,不能像.netframework的web应用一样热更新,经过了解和百度,发现可以使用如下方式实现

将进程内改为进程外

打包后的web.config大体如下

<?xml version="1.0" encoding="utf-8"?>
<configuration><location path="." inheritInChildApplications="false"><system.webServer><handlers><add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" /></handlers><aspNetCore processPath="dotnet" arguments=".\xxxx.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" /></system.webServer></location>
</configuration>

注意aspnetcore节点hostingModel属性是inprocess(也可以这么写InProcess,不区分大小写),表示是在进程内

<aspNetCore processPath="dotnet" arguments=".\xxxx.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />

如果改成进程外就可以热更新了,进程外是OutOfProcess

<aspNetCore processPath="dotnet" arguments=".\xxxx.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="OutOfProcess" />

对于inprocess和outofprocess的官方解释

适合.net6级以上的

web.config,主要是增加handlerSettings节点

<?xml version="1.0" encoding="utf-8"?>
<configuration><!-- To customize the asp.net core module uncomment and edit the following section.For more info see https://go.microsoft.com/fwlink/?linkid=838655 --><system.webServer><handlers><remove name="aspNetCore"/><add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModulev2" resourceType="Unspecified"/></handlers><aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout"><handlerSettings><handlerSetting name="experimentalEnableShadowCopy" value="true" /><handlerSetting name="shadowCopyDirectory" value="../ShadowCopyDirectory/" /><!-- Only enable handler logging if you encounter issues--><!--<handlerSetting name="debugFile" value=".\logs\aspnetcore-debug.log" />--><!--<handlerSetting name="debugLevel" value="FILE,TRACE" />--></handlerSettings></aspNetCore></system.webServer>
</configuration>

使用外部插件

使用ZipDeploy,nuget安装使用

ZipDeploy源代码

MSDeploy

就是vs自带的那个远程发布工具

参考

https://learn.microsoft.com/zh-cn/aspnet/core/host-and-deploy/iis/?view=aspnetcore-7.0
https://stackoverflow.com/questions/63046109/after-the-release-of-net-core-3-1-hostingmodel-inprocess-always-appears-in-t
https://www.cnblogs.com/harpz/p/16174876.html
https://blog.51cto.com/u_13746169/5876561
https://blog.51cto.com/MyIO/5180715

相关文章:

  • Golang 继承
  • 【阅读和学习代码】VoxelNet
  • 动手学深度学习—网络中的网络NiN(代码详解)
  • 功能测试想进阶,可以提供一点点思路和方向吗?
  • 深度学习——图像分类(CIFAR-10)
  • vue项目package.json与package-lock.json作用及区别
  • 10款轻量型的嵌入式GUI库分享
  • ajax请求的时候get 和post方式的区别?
  • 【Java】PAT Basic Level 1023 组个最小数
  • 怎么降低Linux内核驱动开发的风险?
  • C# 图解教程 第5版 —— 第10章 语句
  • appium操控微信小程序的坑
  • Centos 7 安装 Docker Enginee
  • rabbitmq-3.8.15集群、集群镜像模式安装部署
  • 【Python3】【力扣题】202. 快乐数
  • python3.6+scrapy+mysql 爬虫实战
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • android 一些 utils
  • CSS实用技巧
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • Javascript编码规范
  • jQuery(一)
  • markdown编辑器简评
  • PHP 的 SAPI 是个什么东西
  • PHP面试之三:MySQL数据库
  • Redis字符串类型内部编码剖析
  • spark本地环境的搭建到运行第一个spark程序
  • Vue 重置组件到初始状态
  • 阿里云Kubernetes容器服务上体验Knative
  • 从重复到重用
  • 基于游标的分页接口实现
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 那些被忽略的 JavaScript 数组方法细节
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 小程序01:wepy框架整合iview webapp UI
  • 译米田引理
  • 在Mac OS X上安装 Ruby运行环境
  • 【干货分享】dos命令大全
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • (1)(1.9) MSP (version 4.2)
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (二)Eureka服务搭建,服务注册,服务发现
  • (全注解开发)学习Spring-MVC的第三天
  • (一) springboot详细介绍
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)Windows2003安全设置/维护
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • .net core控制台应用程序初识
  • .NET企业级应用架构设计系列之结尾篇
  • .NET业务框架的构建
  • .pub是什么文件_Rust 模块和文件 - 「译」
  • @property括号内属性讲解
  • @Valid和@NotNull字段校验使用