解决NET Core发布iis项目覆盖原有的项目时"另一个程序正在使用此文件,进程无法访问"

简介: 解决NET Core发布iis项目覆盖原有的项目时"另一个程序正在使用此文件,进程无法访问"

解决NET Core发布iis项目覆盖原有的项目时"另一个程序正在使用此文件,进程无法访问"

现在net core运用的多了,一系列的问题接踵而来,更新项目发布到iis时就有一个坑。

 

 

应急办法是直接停站点进行发布。

但是这样做会导致,部署项目停的时间过长,网站暂时没法访问。(项目发布完成后记得“启动”)

 

 


 

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

锁定的部署文件

如果应用正在运行,部署文件夹中的文件会被锁定。 在部署期间,无法覆盖已锁定的文件。 若要在部署中解除已锁定的文件,请使用以下方法之一 停止应用池:

  • 使用 Web 部署并在项目文件中引用 Microsoft.NET.Sdk.Web系统会在 Web 应用目录的根目录中放置一个 app_offline.htm 文件 。 该文件存在时,ASP.NET Core 模块会在部署过程中正常关闭该应用并提供 app_offline.htm 文件 。 有关详细信息,请参阅 ASP.NET Core 模块配置参考
  • 在服务器上的 IIS 管理器中手动停止应用池。
  • 使用 PowerShell 删除 app_offline.html (需要使用 PowerShell 5 或更高版本):
$pathToApp = 'PATH_TO_APP'
# Stop the AppPool
New-Item -Path $pathToApp app_offline.htm
# Provide script commands here to deploy the app
# Restart the AppPool
Remove-Item -Path $pathToApp app_offline.htm

结合官方文档,找到了一个目前看算是比较好的解决方案

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

  1. 在D盘根目录创建一个app_offline.htm文件,注意是.htm文件,不是.html
  2. 创建一个待发布文件夹,把需要更新的项目文件放到该目录下
  3. 创建一个bat执行文件,内容如下,通过bat文件完成更新

 

bat执行文件内容,直接拷贝后替换路径即可

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

bat文件对应每一行的注释:

  1. 复制D盘根目录的app_offline.htm文件到项目运行的目录,接管所有的请求
  2. 复制待发布的文件到项目运行的目录完成覆盖更新
  3. 删除app_offline.htm文件恢复项目正常运行

 

 

注意:iis发布net core时,应用程序池的版本为【无托管代码】,托管管道模式选为【集成】,如下图:

相关文章
|
C++ Windows
.NET Framework安装不成功,下载`NET Framework 3.5`文件,Microsoft Visual C++
.NET Framework常见问题及解决方案汇总,涵盖缺失组件、安装失败、错误代码等,提供多种修复方法,包括全能王DLL修复工具、微软官方运行库及命令行安装等,适用于Windows系统,解决应用程序无法运行问题。
1646 3
|
存储 缓存
.NET 6中Startup.cs文件注入本地缓存策略与服务生命周期管理实践:AddTransient, AddScoped, AddSingleton。
记住,选择正确的服务生命周期并妥善管理它们是至关重要的,因为它们直接影响你的应用程序的性能和行为。就像一个成功的建筑工地,工具箱如果整理得当,工具选择和使用得当,工地的整体效率将会大大提高。
425 0
|
消息中间件 Linux
Linux:进程间通信(共享内存详细讲解以及小项目使用和相关指令、消息队列、信号量)
通过上述讲解和代码示例,您可以理解和实现Linux系统中的进程间通信机制,包括共享内存、消息队列和信号量。这些机制在实际开发中非常重要,能够提高系统的并发处理能力和数据通信效率。希望本文能为您的学习和开发提供实用的指导和帮助。
1138 20
|
Linux C# Windows
.NET使用MiniWord高效生成Word文件
.NET使用MiniWord高效生成Word文件
630 12
|
算法 Java 测试技术
Benchmark.NET:让 C# 测试程序性能变得既酷又简单
Benchmark.NET是一款专为 .NET 平台设计的性能基准测试框架,它可以帮助你测量代码的执行时间、内存使用情况等性能指标。它就像是你代码的 "健身教练",帮助你找到瓶颈,优化性能,让你的应用跑得更快、更稳!希望这个小教程能让你在追求高性能的路上越走越远,享受编程带来的无限乐趣!
1144 13
Visual Studio 快速分析 .NET Dump 文件
【11月更文挑战第10天】.NET Dump 文件是在 .NET 应用程序崩溃或出现问题时生成的,记录了应用程序的状态,包括内存对象、线程栈和模块信息。通过分析这些文件,开发人员可以定位和解决内存泄漏、死锁等问题。在 Visual Studio 中,可以通过调试工具、内存分析工具和符号加载等功能来详细分析 Dump 文件。此外,还可以使用第三方工具如 WinDbg 进行更深入的分析。
1417 1
|
JavaScript API
使用vue3+vite+electron构建小项目介绍Electron进程间通信
使用vue3+vite+electron构建小项目介绍Electron进程间通信
2089 3
|
SQL XML 关系型数据库
入门指南:利用NHibernate简化.NET应用程序的数据访问
【10月更文挑战第13天】NHibernate是一个面向.NET的开源对象关系映射(ORM)工具,它提供了从数据库表到应用程序中的对象之间的映射。通过使用NHibernate,开发者可以专注于业务逻辑和领域模型的设计,而无需直接编写复杂的SQL语句来处理数据持久化问题。NHibernate支持多种数据库,并且具有高度的灵活性和可扩展性。
604 2
|
C# Windows
一款基于.NET开发的简易高效的文件转换器
一款基于.NET开发的简易高效的文件转换器
253 0
|
XML 存储 安全
C#开发的程序如何良好的防止反编译被破解?ConfuserEx .NET混淆工具使用介绍
C#开发的程序如何良好的防止反编译被破解?ConfuserEx .NET混淆工具使用介绍
2344 0