MSBuild コマンド ラインから IIS6 の MSDepSvc に Web アプリ パッケージをデプロイしています。これは、基本認証を使用して次のコマンドで正常に動作しています。
MSBuild.exe Web.csproj
/p:Configuration=Debug
/p:DeployOnBuild=True
/p:DeployTarget=MSDeployPublish
/p:MsDeployServiceUrl=http://[server name]/MsDeployAgentService
/p:DeployIisAppPath=DeploymentTestProject
/p:MSDeployPublishMethod=RemoteAgent
/p:CreatePackageOnPublish=True
/p:username=***
/p:password=***
ただし、私が本当にやりたいのは、ユーザー名とパスワードのパラメーターを削除し、現在のユーザーの ID の下で統合認証にフォールバックすることです。このコマンドはビルド サーバーに送られますが、ターゲット環境 (MsDepSvc に必要) で管理者権限を持つアカウントのプレーン テキストの資格情報が表示されないようにしたいと考えています。これを行う方法に関するドキュメントを見つけることができず、資格情報を削除すると、公開しようとすると 401 無許可が返されます。
特にイライラするのは、統合された認証を使用してパッケージで展開コマンドを問題なく実行できることです (資格情報を含めないでください)。MSBuild コマンド ラインからは実行できないようです。パッケージをカプセル化し、ビルド ファイルを編集せずにプロセスを 1 つのコマンドにデプロイしようとしていますが、現時点ではこれが唯一の方法です。
そこに何かアイデアはありますか?
編集 Sayed と話し合い、コマンド ライン出力をもう少し詳しく調べた後、上記の MSBuild コマンドを (ユーザー名とパスワードのパラメーターなしで) 実行した後、次の MSDeploy コマンドが呼び出されます。
msdeploy.exe
-source:package='[project path]\Web\obj\Debug\Package\Web.zip'
-dest:auto,ComputerName='http://[server]/MsDeployAgentService',UserName='***',IncludeAcls='False',AuthType='NTLM'
-verb:sync
-disableLink:AppPoolExtension
-disableLink:ContentExtension
-disableLink:CertificateExtension
-retryAttempts=2
UserName 属性が設定されていることがわかります。値は、現在ログオンしているユーザーのユーザー名です。これを取り出して上記のコマンドを直接実行すると、デプロイはうまくいきます。
その上で、元の MSBuild コマンドが MSDeploy を呼び出すときに UserName 属性を挿入するのはなぜですか? これが現在唯一の障壁のようです。