解决 ASP.NET Core 部署到 IIS,更新项目时"文件夹正在使用"错误
此解决方法来源于微软官方
原文地址:https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-net-6-preview-3/#shadow-copying-in-iis
项目在发布的时候,根目录会产生一个web.config文件,修改此文件为
原文如下
我们在 IIS ASP.NET 核心模块中添加了一项新功能,以添加对卷影复制应用程序程序集的支持。目前,.NET 在 Windows 上运行时会锁定应用程序二进制文件,因此当应用程序仍在运行时,无法替换二进制文件。虽然我们的建议仍然是使用应用脱机文件,但我们认识到在某些情况下(例如 FTP 部署)无法执行此操作。
在这种情况下,可以通过自定义 ASP.NET 核心模块处理程序设置来启用卷影复制。在大多数情况下,ASP.NET 核心应用程序没有签入到源代码管理中的 web.config,您可以对其进行修改(它们通常由 SDK 生成)。可以添加此示例以开始使用。
web.config
<?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>
注意:processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" 要更改为
processPath="dotnet" arguments=".\GamePlayer.Web.dll"
GamePlayer.Web.dll 为你项目的DLL名称
../ShadowCopyDirectory/ 也可以更改为你自己存放副本的目录
否则会报错
已测试,好用
.net 7 中有改动
https://weblog.west-wind.com/posts/2022/Nov/07/Avoid-WebDeploy-Locking-Errors-to-IIS-with-Shadow-Copy-for-ASPNET-Core-Apps
<aspNetCore processPath=".\Westwind.Webstore.Web.exe" hostingModel="inprocess" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" > <handlerSettings> <handlerSetting name="enableShadowCopy" value="true" /> <handlerSetting name="shadowCopyDirectory" value="../ShadowCopyDirectory/" /> </handlerSettings> </aspNetCore>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!