ユーザーの資格情報を渡したときに、MSDeploy のデプロイが TeamCity でうまく機能していました。コマンド ライン パラメーター (一部の値には環境変数を使用) は次のとおりです。
MSBuild.exe Web.csproj
/P:Configuration=%env.Configuration%
/P:DeployOnBuild=True
/P:DeployTarget=MSDeployPublish
/P:MsDeployServiceUrl= https://%env.TargetServer%/MsDeploy.axd
/P:AllowUntrustedCertificate =True
/P:MSDeployPublishMethod=WMsvc
/P:CreatePackageOnPublish=True
/P:UserName=%env.AdminUser%
/P:Password=%env.AdminPassword%
うまくいきました。しかし、今は統合認証を使用したいと考えています。Can MSBuild deploy using integrated authentication or only basic?から Troy の提案に従ってみました。しかし、それはうまくいきません。空白のユーザー名を渡して指定するさまざまな組み合わせを試しました
/p:AuthType=NTLM
最も近い方法は、 /p:AuthType=NTLM を指定して空のユーザー名を渡すことです。しかし、それでも次のエラーが発生します。
Web 管理サービスを使用して宛先コンピューター ("[自分の宛先サーバー名]") に接続しましたが、認証できませんでした。正しいユーザー名とパスワードを使用していること、接続先のサイトが存在すること、資格情報がサイトへのアクセス許可を持つユーザーを表していることを確認してください。リモート サーバーがエラーを返しました: (401) Unauthorized
ローカル サーバーとリモート サーバーの両方で Web 管理サービスを実行しています。両方のインスタンスを、サイトへの適切なアクセス権があることがわかっているユーザーとして実行するように変更しました。これは、資格情報を手動で渡す場合に機能するのと同じユーザーです。
また、宛先サイトでそのユーザーに IIS マネージャーのアクセス許可を手動で付与しようとしました (ただし、資格情報が手動で渡されたときにユーザーがサイトに公開できるため、なぜそれが必要なのかはわかりません)。
私が気付いていることの 1 つは、WMsvc ログに、NTLM 認証で行われた試行のユーザー名が記録されていないことです。
ここで何が起こっているのか分かりません。TeamCity 構成にユーザー資格情報を保存する必要はありません。
ありがとう。