WebDeploy с MSdeploy.exe не может синхронизировать сборку GAC, потому что dll заблокированы другим процессом

У меня возникла эта проблема при использовании 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(строковый путь, FileMode fileMode, FileAccess fileAccess)., Boolean whatIf) --- Конец трассировки стека внутренних исключений --- --- Конец трассировки стека внутренних исключений --- в Microsoft.Web.Deployment.DeploymentObject.Update(источник DeploymentObject,DeploymentSyncContext syncContext) в Microsoft.Web.Deployment.DeploymentSyncContext.HandleUpdate(DeploymentObject destObject, DeploymentObject sourceObject) в Microsoft.Web.Deployment.DeploymentSyncContext.SyncDirPathChildren(DeploymentObject destRoot, DeploymentObject sourceRoOppjectObjectObject.ObObObDeObObDeObDOEbDOEBDOEBOWREDDOBEWORCWDEWEBDWORCWDEBDEWEBDEUBE.Deployment.DeploymentSyncContext.SyncChildrenOrder (DeploymentObject dest, источник DeploymentObject) a t Microsoft.Web.Deployment.DeploymentSyncContext.ProcessSync (DeploymentObject destinationObject, DeploymentObject sourceObject)
в Microsoft.Web.Deployment.DeploymentObject.SyncToInternal (DeploymentObject destObject, DeploymentSyncOptions syncOptions, PayloadTable payloadTable, Conten tRootTable contentRootTable) в Microsoft.Web.Deployment.DeploymentAgent.HandleServiceRecureRquisionRecureQuentWorker - в Microsoft.Web.Deployment.StatusThreadHandler.CheckForException () в Microsoft.Web.Deployment.AgentClientProvider.RemoteDestSync (DeploymentObje ct sourceObject,DeploymentSyncContext syncContext) в Microsoft.Web.DeploymentObload PayOgnloadObjectObjectSecjectObjectSecjectObjectSyncjectSecjectObjectSecjectObjectSecjectObjectSecjectObjectSecjectObjectSecjectObjectSecjectObjectSecjectObjectSjectSecjectSject, Содержит tRootTable contentRootTable) в Microsoft.Web.Deployment.DeploymentObject.SyncTo (DeploymentProviderOptions providerOptions, DeploymentBaseOptions baseOptions, DeploymentSyncOptions syncO ptions) в MSDeploy.MSDeploy.ExecuteWorker () Количество ошибок: 1. *

Если я выполню IISRESET на DESTINATIONSERVER, ошибка не произойдет!

Мой вопрос:

Можно ли разблокировать DLL без выполнения команды IISRESET?

Я думаю, что могу избежать перезапуска всего веб-сервера.

Вы можете мне помочь'

Большое спасибо!

С наилучшими пожеланиями.

1 ответ

Как насчет использования поставщика 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

Другие вопросы по тегам