TFS 2015 無法部署到特定伺服器,但 Visual Studio 可以從建置代理伺服器部署

TFS 2015 無法部署到特定伺服器,但 Visual Studio 可以從建置代理伺服器部署

在檢查了所有常見的嫌疑犯後,我有點不知所措。

最令人困惑的事情之一是我可以透過 Visual Studio 在建置代理伺服器上進行部署,使用相同伺服器的相同 url、相同的程式碼(從字面上複製s最新建置的建置代理程式資料夾中的Visual Studio 解決方案)

然而,當透過 TFS 2015 建置時,我看到以下內容:

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.Publishing.targets(4276,5):錯誤:Web 部署任務失敗。 (無法完成對遠端代理 URL 的請求'https://siteurl:8172/msdeploy.axd?site=網站名稱'。

此錯誤表示您無法連線到伺服器。確保服務 URL 正確,該電腦和伺服器電腦上的防火牆和網路設定配置正確,且伺服器上已啟動相應的服務。

錯誤詳情:

無法完成對遠端代理 URL 的請求'https://siteurl:8172/msdeploy.axd?site=網站名稱'。

底層連線已關閉:發送時發生意外錯誤。

無法從傳輸連線讀取資料:現有連線被遠端主機強制關閉。

現有連線被遠端主機強制關閉

此外,當 TFS 執行產生時,目標 IIS 伺服器上的 WMsvc 日誌不會顯示請求到達伺服器,但是當 Visual Studio 執行產生時,它確實會到達伺服器。

TFS 中傳遞的 MSBuild 參數(為了可讀性而添加了換行符號):

/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 建置代理伺服器)和目標(IIS Web 伺服器)相同,則不能透過 TFS ,連接埠相同,都使用https、Web Deploy等。

關於如何進一步調試有什麼想法嗎?

附加資訊:

目標伺服器:Windows Server 2012R2(Azure 上的 VM)

答案1

檢查 TLS 是否不符。我們使用 SchUseStrongCrypto reg 金鑰在一台電腦上強制使用 TLS 1.2,而在另一台電腦上則不使用。這導致了與OP所經歷的相同的「強行關閉」。在這裡發布了更多詳細信息https://fuseit.zendesk.com/hc/en-us/articles/360000328595

相關內容