TFS 2015 は特定のサーバーにデプロイできませんが、Visual Studio はビルドエージェントサーバーからデプロイできます。

TFS 2015 は特定のサーバーにデプロイできませんが、Visual Studio はビルドエージェントサーバーからデプロイできます。

いつもの容疑者をすべて調べたのですが、ちょっと困惑しています。

最も不可解なことの 1 つは、同じ URL を同じサーバー、同じコードで使用して、Visual Studio 経由でビルド エージェント サーバーにデプロイできることです (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=サイト名'。

基礎となる接続が閉じられました: 送信時に予期しないエラーが発生しました。

トランスポート接続からデータを読み取ることができません: 既存の接続がリモート ホストによって強制的に閉じられました。

既存の接続がリモートホストによって強制的に閉じられました

さらに、ターゲット IIS サーバーの WMsvc ログには、TFS がビルドを実行するときにサーバーに到達した要求が表示されませんが、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 と構成のみが変更になりました。

これはネットワークの問題のようですが、ソース (TFS ビルド エージェント サーバー) と宛先 (IIS Web サーバー) が同じで、ポートも同じで、両方とも https、Web 配置などを使用している場合、同じサーバーからは Visual Studio 経由でも機能するのに、TFS 経由では機能しない理由がわかりません。

さらにデバッグする方法について何かアイデアはありますか?

追加情報:

対象サーバー: Windows Server 2012R2 (Azure 上の VM)

答え1

TLS の不一致をチェックしてください。SchUseStrongCrypto レジストリ キーを使用して、一方のマシンでは TLS 1.2 を強制し、もう一方のマシンでは強制しませんでした。その結果、OP が経験したのと同じ「強制終了」が発生しました。詳細については、こちらでブログに書いています。https://fuseit.zendesk.com/hc/en-us/articles/360000328595

関連情報