Deployment bin/*.dll在app_offline.htm复制并激活后部署网站时锁定(卷影复制关闭)
我在部署网站时遇到问题。卷影复制在以前的部署问题和部署站点后关闭 特别是在部署时,我发现即使在复制Deployment bin/*.dll在app_offline.htm复制并激活后部署网站时锁定(卷影复制关闭),deployment,app-offline.htm,shadow-copy,Deployment,App Offline.htm,Shadow Copy,我在部署网站时遇到问题。卷影复制在以前的部署问题和部署站点后关闭 特别是在部署时,我发现即使在复制app_offline.htm并验证站点/应用程序处于脱机状态后,bin/*.dll中的文件也经常被锁定 在关闭卷影复制的情况下,当appdomain在app_offline.htm外观上卸载时,我仍然希望dll上的锁是自由的 我已尝试部署一个临时web.config,该配置位于堆栈溢出上,旨在防止在我尝试删除bin/的内容之前立即获取更改(到bin/) 在复制新的web.config之后,我甚至暂
app_offline.htm
并验证站点/应用程序处于脱机状态后,bin/*.dll
中的文件也经常被锁定
在关闭卷影复制的情况下,当appdomain
在app_offline.htm
外观上卸载时,我仍然希望dll上的锁是自由的
我已尝试部署一个临时web.config
,该配置位于堆栈溢出
上,旨在防止在我尝试删除bin/
的内容之前立即获取更改(到bin/
)
在复制新的web.config
之后,我甚至暂停了10s
?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<httpRuntime waitChangeNotification="300"
maxWaitChangeNotification="300"/>
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
</system.webServer>
</configuration>
?xml version=“1.0”encoding=“utf-8”>
我已与handles util确认我的应用程序池(w3wp.exe
process)是DLL上的锁的持有者,因此我假设这就是我无法删除/覆盖文件的原因。如果我手动回收应用程序池,它会释放它,我可以很好地进行部署。不幸的是,作为部署过程的一部分,可以脱机复制app_并更改web.config,但执行IIS
appcmd回收是不可能的(出于权限/组策略原因),因此我确实需要能够通过app_offline.htm
和web.config释放此锁
重新启用卷影复制确实“解决”了此特定问题,但如果dll上仍有锁。然而,我想知道/并担心我是否只是在推迟这个问题。除非重新加载appdomain
时旧dll上的锁被释放
当复制app_offline.htm
时,w3wp
进程id不会像硬回收那样改变,但我假设它正在卸载appdomain
,这将释放它已锁定的bin/文件
另一个有趣的问题是,这似乎只发生在我们的生产服务器上,我无法在本地或在我们的开发/登台站点上重新创建它。我不认为app\u池
或IIS
配置有任何配置差异,但这可能导致这种行为
另外,为了澄清shadowCopyBinAssemblies
已被设置为false超过3年,没有发生此问题(相同的部署过程),因此我真的觉得最近发生的事情导致了此问题,但我不知道是什么
感谢您提供有关如何解决此问题,甚至是什么原因的任何想法
(我相信服务器是IIS7
或7.5
)我遇到了类似的问题,即即使存在app_offline.htm,DLL也被IIS锁定。
重新启动池可以解决问题,但这是手动的。寻找一种自动化的方法。在我的例子中,DLL是PDFium.DLL,它可能是一个非托管DLL这是一个老问题,但您能解决这个问题吗?我们有一个非常相似的问题。如果是这样的话,你应该把答案贴在这里。谢谢任何想法,我们都有相同的问题,你能分享解决方案吗?谢谢。这并不能真正为这个问题提供答案。你可以提出你自己的问题,如果你有一个延长问。但答案部分并不是这样的。