繁体   English   中英

使用MSdeploy.exe的WebDeploy无法同步GAC程序集,因为dll被另一个进程锁定

[英]WebDeploy with MSdeploy.exe fails to sync GAC Assembly because dll(s) locked by another process

我在使用msdeploy将GAC程序集同步到许多应用程序服务器时遇到了这个问题。

当我运行此命令

msdeploy -verb:sync -source:gacAssembly="'MyAssembly'" -dest:gacAssembly,computername=DESTINATIONSERVER

我得到了这个错误:

* Microsoft.Web.Deployment.DeploymentException:(28/09/2010 16.46.37)在远程计算机上处​​理请求时发生错误。 ---> Microsoft.Web.Deployment.DeploymentClientServerException:处理“ INPS.DNA.dll”时遇到错误。 ---> Microsoft.Web.Deployment.DeploymentException:错误代码为0x80070020。 ---> System.IO.IOException:该进程无法访问“ C:\\ Windows \\ assembly \\ GAC_MSIL \\ MYASSEMBLY \\ 1.0.0.0__a31fe99d2f98435c \\ MYASSEMBLY.dll”,因为该进程正在被另一个进程使用。 在Microsoft.Web.Deployment.FilePathProvider.Add(Microsoft.Web.Deployment.Win32Native.RaiseIOExceptionFromErrorCode(Win32ErrorCode errorCode,String mayFullPath)在Microsoft.Web.Deployment.FileStreamEx.CreateInstance(String path,FileMode fileMode,FileAccess fileAccess)在,布尔值whatIf)---内部异常堆栈跟踪的末尾--- ---内部异常堆栈跟踪的末尾--- Microsoft.Web.Microsoft.Web.Deployment.DeploymentObject.Update(DeploymentObject source,DeploymentSyncContext syncContext)。 Microsoft.Web.Deployment.DeploymentSyncContext.SyncDirPathChildren(Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildrenNoOrder(DeploymentObject dest,DeploymentObject源))上的Deployment.DeploymentSyncContext.HandleUpdate(DeploymentObject destObject,DeploymentObject sourceObject) .Deployment.DeploymentSyncContext.SyncChildrenOrder(DeploymentObject dest,DeploymentObject源)a t Microsoft.Web.Deployment.DeploymentSyncContext.ProcessSync(DeploymentObject destinationObject,DeploymentObject sourceObject)
Microsoft.Web.Deployment.DeploymentAgent.HandleSync(DeploymentAgentWorkerR equest workerRequest)上的Microsoft.Web.Deployment.DeploymentObject.SyncToInternal(DeploymentObject destObject,DeploymentSyncOptions syncOptions,PayloadTablepayloadTable,Conten tRootTable contentRootTable)-内部异常堆栈跟踪的结尾- -在Microsoft.Web.Deployment.DeploymentObject.SyncToInternal(DeploymentObject destObject,DeploymentSyncOptions syncOptions,PayloadTablepayloadTable,Microsoft.Web.Deployment.AgentClientProvider.RemoteDestSync(DeploymentObje ct sourceObject,DeploymentSyncContext syncContext)处,位于Microsoft.Web.Deployment.DeploymentObject.SyncTo(DeploymentProviderOptions providerOptions,DeploymentBaseOptions baseOptions,DeploymentSyncOptions syncO ptions)上的tRootTable contentRootTable),位于MSDeploy.MSDeploy.ExecuteWorker()的错误计数:1. *

如果我在DESTINATIONSERVER上执行IISRESET ,则不会发生该错误!

我的问题是:

是否可以在不执行IISRESET命令的情况下解锁DLL?

我想我可以避免重新启动整个Web服务器。

你能帮助我吗'

非常感谢!

最好的祝福。

使用recyleApp提供程序停止和启动应用程序池该怎么办?

msdeploy.exe -verb:sync -source:recycleApp -dest:recycleApp="Default Web Site",recycleMode="StopAppPool",computerName=remote-computer

...进行真正的部署...

msdeploy.exe -verb:sync -source:recycleApp -dest:recycleApp="Default Web Site",recycleMode="StartAppPool",computerName=remote-computer

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM