解决ASP.NET Core部署到IIS,更新项目"另一个程序正在使用此文件,进程无法访问"

问题:部署到IIS上的ASP.NET Core项目,在更新的时候会进程占用的错误

初步解决方案:

1,关闭应用程序池

2,关闭网站

3,更新项目

缺点:网站没法访问,部署项目停的时间过长

查询官方文档后,官方给出的方案:

结合官方文档,找到了一个目前看算是比较好的解决方案(一定要看底部的特别注意)

好点的解决方案(一次配置后,1秒钟更新):

1,在D盘根目录创建一个app_offline.htm文件,注意是.htm文件,不是.html

2,创建一个待发布文件夹,把需要更新的项目文件放到该目录下

3,创建一个bat执行文件,内容如下,通过bat文件完成更新

@echo off
call xcopy D:\app_offline.html D:\运行的项目
call xcopy D:\待发布项目 D:\运行的项目 /s /e /Q /Y /I
del D:\运行的项目\app_offline.htm

注释:

1,复制D盘根目录的app_offline.htm文件到项目运行的目录,接管所有的请求

2,复制待发布的文件到项目运行的目录完成覆盖更新

3,删除app_offline.htm文件恢复项目正常运行

特别注意:

部署到 IIS 的 ASP.NET Core 应用程序可以选择两种不同的托管模式,分别是“进程内托管” 和 “进程外托管”,选择不同的托管模式可通过修改配置文件 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=".\Property.Api.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="OutOfProcess" />
    </system.webServer>
  </location>
</configuration>

需要修改 aspNetCore的hostingModel

InProcess(进程内托管)

OutOfProcess(进程外托管)

好点的解决方案需要把项目修改为OutOfProcess(进程外托管)

原文地址:https://www.cnblogs.com/zhangchunyu/p/11066078.html

时间: 2024-10-14 21:24:00

解决ASP.NET Core部署到IIS,更新项目"另一个程序正在使用此文件,进程无法访问"的相关文章

IIS “另一个程序正在使用此文件,进程无法访问&quot;

重启iis,提示"另一个程序正在使用此文件,进程无法访问".一开始就怀疑是80端口被占用,修改iis的端口为其它端口,重启iis, 果然成功. 在命令行,netstat -nabo,查看80端口,发现是被apache占用. 修改apache的80端口为81. 修改下面文件中的listener 80为listener 81,然后重启apache或是重启电脑. Apache\Apache\conf\httpd.conf

启动IIS 网站出现错误 另一个程序正在使用此文件,进程无法访问

可能你安装了Apache; IIS启动失败,手工启动它,提示:"另一个程序正在使用此文件,进程无法访问!" 怀疑80端口被其他程序占用,改为8080后正常. 在DOS下输入: netstat -ano 查看80端口信息中的PID号,然后打开任务管理器查看对应PID的程序名称. 打开任务管理器,点击"查看"/选择列,勾选"PID(进程标识符)",然后单击"进程"标签,找到80端口对应的pid,就可以看到是那个程序占用的了.启动I

解决ASP.NET 自定义报表部署到IIS浏览时出现ASP.NET会话已结束问题

进到公司开始接触的项目就要做报表,原系统使用的是水晶报表,但是水晶报表展示方面美观方面不怎么好需客户需要美化一下.自定义报表与水晶报表之前都没有接触过,自己先学了一下这两种报表,后面觉得自定义报表设计比较灵活所以就选择了自定义报表.当开发完成后自己在开始环境下浏览测试都没有出现过ASP.NET会话已过期的问题,可是当部署到IIS测试人员进行测试时出如图情况: 自己接触IIS不多,并且在开发环境下测试都没有问题联署到IIS就有问题当时就觉得有点头大,于是上网找了下资料但是这方面的资料并不多并且很多

asp.net core部署到iis

asp.net core项目部署到IIS稍微不同于之前,记录几个要点: 一.下载安装AspNetCoreModule模块,它包含在.NET Core Windows Server Hosting bundle里面,这个链接或许不是最新的了,官方文档里面有这个链接,到下图所示位置即可找到. 安装完之后,会发现多了个模块: 然后重启iis.如果还是出现以下错误: HTTP Error 502.5 - Process Failure Common causes of this issue: The a

关于asp.net core部署到iis中出现 HTTP Error 502.5 - Process Failure的问题

环境是windows Server2008R2 出现这个问题搞了一下午都没解决,最后又加班才算搞定,由于英文不太好,官方的文档看了好几遍,也按照文档做的,但还是出现这个问题,百度google搜了很多解决方案,百度信息没太多价值,就感觉dudu的一篇文章对症,但试的时候才发现没用.最后还是耐心的看了几个stackoverflow的方案,最后看到其中的一个回答试了下,然后才解决的. 原因是系统缺少一个补丁:Windows6.1-KB2999226-x64.msu 附stackoverflow原文:h

asp.net core部署到iis中出现 HTTP Error 502.5 - Process Failure的问题

环境是windows Server2012  问题的原因是缺少文件:api-ms-win-crt-runtimel1-1-0.dll, dotnet 启动程序失败. 解决方案1: 安装系统补丁: 2012 R2对应>Windows8.1-KB2999226-x64.msu 下载地址: https://www.microsoft.com/zh-CN/download/details.aspx?id=49063 2012 对应>Windows8-RT-KB2999226-x64.msu 下载地址:

ASP.NET Core部署到Windows IIS

网上已经有许多ASP.NET Core关于Widows IIS部署的文章,在部署到服务器时遇到了一些问题,在这里我就不再对原理进行阐释(复制)了,只写下一些关键环节,想看原理的同学请参考官网,此文章作为留用. 步骤: 1.ASP.NET Core程序内配置 2.Windows Server配置  一.ASP.NET Core应用程序配置 web.config 配置(官方教程) 重点修改 processPath 和 arguments 两个参数 processPath 修改为 dotnet arg

你真的了解ASP.NET Core 部署模型吗?

原文:你真的了解ASP.NET Core 部署模型吗? ----------------------------   以下内容针对 ASP.NET Core2.1,2.2出现IIS进程内寄宿 暂不展开讨论-------------------------- 相比ASP.NET,ASP.NET Core 2.1出现了3个新的组件:ASP.NET Core Module.Kestrel.dotnet.exe, 后面我们会理清楚这三个组件的作用和组件之间的交互原理. ASP.NET Core 设计的初

又一篇Centos7下的asp.net core部署教程

原文:又一篇Centos7下的asp.net core部署教程 历程2个多月的学习,我终于从PHP转.Net开发了. 虽然网上已经有很多关于asp.net core在linux下的部署教程了,但我还是想写一篇,主要增强我自己的记忆. 搭建的环境为Centos7 + .net core  + nginx + mysql5.7,我的网站是asp.net core后端,vue前端,数据据mysql: 第一次搭建时遇到不少的坑,我会在下面也说到 前提,你有一台可以联网,有root账号密码,有开通ssh的