Я немного растерялся, проверив всех обычных подозреваемых.
Одна из самых непонятных вещей заключается в том, что я могу развернуть через Visual Studio на сервере Build Agent, используя тот же URL-адрес на тот же сервер, тот же код (буквально скопировал решение Visual Studio из агента сборки s
папка последней сборки)
Однако при сборке через TFS 2015 я вижу следующее:
C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ Web \ Microsoft.Web.Publishing.targets (4276,5): ошибка: не удалось выполнить задачу веб-развертывания. (Не удалось выполнить запрос к URL удаленного агента 'https: // siteurl: 8172 / msdeploy.axd? site = sitename'.)
Эта ошибка означает, что вы не можете подключиться к серверу. Убедитесь, что URL-адрес службы правильный, настройки брандмауэра и сети на этом компьютере и на компьютере-сервере настроены правильно, а соответствующие службы были запущены на сервере.
Детали ошибки:
Не удалось выполнить запрос к URL удаленного агента 'https: // siteurl: 8172 / msdeploy.axd? site = sitename'.
Базовое соединение было закрыто: при отправке произошла непредвиденная ошибка.
Невозможно прочитать данные из транспортного соединения: существующее соединение было принудительно закрыто удаленным хостом.
Существующее соединение было принудительно закрыто удаленным хостом
Кроме того, журнал WMsvc на целевом сервере IIS не показывает, что запрос попадает на сервер, когда TFS выполняет сборку, однако, когда Visual Studio выполняет сборку, он достигает сервера.
Аргументы MSBuild, переданные в TFS (разрывы строк добавлены для удобства чтения):
/p:GenerateBuildInfoConfigFile=false
/p:DeployOnBuild=true;
DeployTarget=MSDeployPublish;
MSDeployPublishMethod=WMSvc;
EnableMSDeployBackup=False;
DeployIisAppPath=sitename;
MsDeployServiceUrl=https://siteurl:8172/msdeploy.axd;
AllowUntrustedCertificate=True;
username=$(Web Deploy Username);
password=$(Web Deploy Password);
SkipExtraFilesOnServer=True
Определение сборки было скопировано из другой рабочей сборки с единственными изменениями, касающимися URL-адреса и конфигурации.
Похоже, это проблема сети, но я не знаю, почему он будет работать с того же сервера через Visual Studio, но не через TFS, если источник (сервер агента сборки TFS) и место назначения (веб-сервер IIS) одинаковы. , порт тот же, оба используют https, Web Deploy и т. д.
Есть идеи по дальнейшей отладке?
Дополнительная информация:
Целевой сервер: Windows Server 2012R2 (виртуальная машина в Azure)
Проверьте несоответствие TLS. Мы использовали регистрационный ключ SchUseStrongCrypto, чтобы принудительно использовать TLS 1.2 на одной машине, а не на другой. Это привело к «принудительному закрытию», как и в случае с ОП. Подробности в блоге здесь https://fuseit.zendesk.com/hc/en-us/articles/360000328595