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

У меня проблема с использованием 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) в Microsoft.Web.Deployment.FilePathProvider.Add (источник DeploymentObject, логический 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 sourceRoot) в Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildrenNoOrder (DeploymentObject dest, источник DeploymentObject) в Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildrenOrder (DeploymentObject dest, источник DeploymentObject) в 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.HandleSync (DeploymentAgentWorkerR equest workerRequest) --- Конец внутренней трассировки стека исключений --- в Microsoft.Web.Deployment.StatusThreadHandler.CheckForException () в Microsoft.Web.Deployment.AgentClientProvider.RemoteDestSync (DeploymentObje ct sourceObject, DeploymentSyncContext syncContext) в Microsoft.Web.Deployment.DeploymentObject.SyncToInternal (DeploymentObject destObject, DeploymentSyncOptions syncOptions, PayloadTable payloadTable, Conten tRootTable contentRootTable) в Microsoft.Web.Deployment.DeploymentObject.SyncTo (DeploymentProviderOptions providerOptions, DeploymentBaseOptions baseOptions, DeploymentSyncOptions syncO ptions) в MSDeploy.MSDeploy.ExecuteWorker () Количество ошибок: 1. *

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

Мой вопрос:

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

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

Можете ли вы помочь мне '

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

С уважением.

1 Ответ

2 голосов
/ 01 октября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...