0

我在使用 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.Win32Native.RaiseIOExceptionFromErrorCode(Win32ErrorCode errorCode, String maybeFullPath) 在 Microsoft.Web.Deployment.FileStreamEx.CreateInstance(String path, FileMode fileMode, FileAccess fileAccess) 在 Microsoft.Web.Deployment.FilePathProvider。
在 Microsoft.Web.Deployment.DeploymentObject.SyncToInternal(DeploymentObject destObject, DeploymentSyncOptions syncOptions, PayloadTable payloadTable, ContentRootTable contentRootTable) 在 Microsoft.Web.Deployment.DeploymentAgent.HandleSync(DeploymentAgentWorkerR equest workerRequest) --- 内部异常堆栈跟踪结束 -- - 在 Microsoft.Web.Deployment.StatusThreadHandler.CheckForException() 在 Microsoft.Web.Deployment.AgentClientProvider.RemoteDestSync(DeploymentObject sourceObject, DeploymentSyncContext syncContext) 在 Microsoft.Web.Deployment.DeploymentObject.SyncToInternal(DeploymentObject destObject, DeploymentSyncOptions syncOptions, PayloadTable payloadTable , ContentRootTable contentRootTable) 在 Microsoft.Web.Deployment.DeploymentObject.SyncTo(DeploymentProviderOptions providerOptions,在 MSDeploy.MSDeploy.ExecuteWorker() 处的 DeploymentBaseOptions baseOptions、DeploymentSyncOptions syncOptions) 错误计数:1.*

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

我的问题是:

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

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

你能帮助我吗'

非常感谢!

此致。

4

1 回答 1

2

使用 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

于 2010-09-30T20:53:20.260 回答