Назад | Перейти на главную страницу

Ошибка MSDeploy: «существующее соединение было принудительно закрыто удаленным узлом»

Следующая строка MSDeploy, передаваемая в командную строку, приводит к ошибке. Может ли кто-нибудь пролить свет на это?

"C:\Program Files\IIS\Microsoft Web Deploy\\msdeploy.exe" -source:package='D:\dev\Project\obj\BuildConfiguration\Package\Project.zip' -dest:auto='Website Name',computerName='computername',userName='username',password='password' -verb:sync -enableRule:DoNotDeleteRule -allowUntrusted -debug

Трассировки стека:

Microsoft.Web.Deployment.DeploymentAgentUnavailableException: Could not complete the request to remote agent URL 'http://computername/MSDEPLOYAGENTSERVICE'.
---> System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a receive. ---> System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host.
---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)   
--- End of inner exception stack trace ---    at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)    at System.Net.PooledStream.Read(Byte[] buffer, Int32 offset, Int32 size)    at System.Net.Connection.SyncRead(HttpWebRequest request, Boolean userRetrievedStream, Boolean probeRead)    --- End of inner exception stack trace ---    at System.Net.HttpWebRequest.GetResponse() at Microsoft.Web.Deployment.AgentClientProvider.GetHttpResponse(HttpWebRequest request)    --- End of inner exception stack trace ---    at Microsoft.Web.Deployment.AgentClientProvider.GetHttpResponse(HttpWebRequest request)    at Microsoft.Web.Deployment.AgentClientProvider.CreateStatusThread(DeploymentSyncContext syncContext)    at Microsoft.Web.Deployment.AgentClientProvider.RemoteDestSync(DeploymentObject sourceObject, DeploymentSyncContext syncContext)    at Microsoft.Web.Deployment.DeploymentObject.SyncToInternal(DeploymentObject destObject, DeploymentSyncOptions syncOptions, PayloadTable payloadTable, ContentRootTable contentRootTable)    at Microsoft.Web.Deployment.DeploymentObject.SyncTo(DeploymentProviderOptions providerOptions, DeploymentBaseOptions baseOptions, DeploymentSyncOptions syncOptions)    at MSDeploy.MSDeploy.ExecuteWorker() Error count: 1.

Вы установили на "computername" - службу агента msdeploy?

Для его установки необходимо:
1) скачать пакет с iis.net
2) установить служба управления (для IIS на сервере DEST)
3) настроить службу управления (чтобы разрешить по ip что-нибудь, обратите внимание: требуется ТОЛЬКО ОДНА запись)
4) запустить службу управления
5) start (начало) агентская служба
6) попробуйте развертывание

Я уверен, что это должно сработать (я столкнулся с этой ошибкой при первой попытке использовать msdeploy)

Я также видел это сообщение об ошибке «принудительно отключено», когда сертификат, используемый службой управления, недействителен для сервера.

В моем случае я создал стандартную виртуальную машину веб-сервера, а затем клонировал подготовленную sysprep версию виртуальной машины. Служба управления клонированной виртуальной машины все еще отображала сертификат, выданный исходной виртуальной машиной.

Замена плохого сертификата самоподписанным сертификатом сразу решает проблему.

Сначала мне потребовалось несколько минут, чтобы понять это ...

Просто была эта проблема на сервере IIS 10.

Наше удаленное развертывание из CI возвращало следующую ошибку:

07-Mar-2019 11:36:21    Info: Using ID 'fc4e2c45-1368-4487-aff2-60cbb3cde2f6' for connections to the remote server.
07-Mar-2019 11:36:22    Error: Could not complete the request to remote agent URL 'https://anonymous-server.co.nz:8172/msdeploy.axd?site=anonymous-site.co.nz'.
07-Mar-2019 11:36:22    Error: The underlying connection was closed: An unexpected error occurred on a send.
07-Mar-2019 11:36:22    Error: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host.
07-Mar-2019 11:36:22    Error: An existing connection was forcibly closed by the remote host
07-Mar-2019 11:36:22    Error count: 1.

Это произошло после окна обслуживания, которое мы выполнили несколько ночей назад, установили обновления Windows и перезагрузили сервер. Служба управления была в сети, и я попытался перезапустить ее, однако она не позволяла развертываниям работать.

Срок действия используемого SSL-сертификата истек только в 2027 году, и, похоже, он был правильно связан с сервисом. Благодаря комментарию @ David-Montgomery выше, это привело меня в правильном направлении.

  1. Создайте новый самозаверяющий сертификат из узла сервера -> представление сертификатов сервера (неважно, что это такое, это временно)
  2. Остановите службу управления (перейдя на узел сервера, затем в службу управления в группе управления в нижней части представления функций, затем дважды щелкнув по ней и нажав кнопку остановки на правой панели)
  3. Измените сертификат SSL в службе управления (WMSVC) на самоподписанный сертификат, который вы только что создали.
  4. Применить и запустить службу с правой стороны
  5. Остановите службу снова
  6. Измените сертификат SSL на тот, который использовался ранее (при условии, что срок его действия еще не истек).
  7. Подайте заявку и снова запустите службу.
  8. Удалите созданный вами временный сертификат.

После этого служба управления, похоже, повторно привязана к сертификату SSL, и развертывания снова работают.

TL; DR: по какой-то причине служба WMSVC потеряла соединение с сертификатом SSL, хотя пользовательский интерфейс показал, что он связан?