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

这是一个老问题,但您能解决这个问题吗?我们有一个非常相似的问题。如果是这样的话,你应该把答案贴在这里。谢谢任何想法,我们都有相同的问题,你能分享解决方案吗?谢谢。这并不能真正为这个问题提供答案。你可以提出你自己的问题,如果你有一个延长问。但答案部分并不是这样的。