私は基本認証を使用して、次のコマンドを使用して正常に動作しているIIS6上MSDepSvcにMSBuildのコマンドラインからWebアプリケーションパッケージを展開しています:MSBuildは統合認証を使用して展開できますか?
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。
特に不満を抱かせるのは、統合認証(資格情報を含めない)でパッケージ内のdeployコマンドをうまく実行できることです。MSBuildコマンドラインから実行できないようです。私はパッケージをカプセル化し、ビルドファイルを編集せずに単一のコマンドにプロセスをデプロイしようとしていますが、現在のところこれが唯一の方法です。
編集 いくつかのサイードとの協議・上記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属性が設定されていて、値が現在ログオンしているユーザーのユーザー名であることがわかります。私がこれを取り出して上記のコマンドを直接実行すると、展開はうまくいきます。
したがって、MSDuployを呼び出すときに元のMSBuildコマンドがUserName属性を挿入するのはなぜですか?これは唯一の障壁であるように思われる。
UseMSDeployExeをtrueに設定すると、AuthType = NTLM ??? –
実際、Visual Studioから同じドメイン上の別のマシンにパブリッシュするときに問題が発生します。既にログオンしている資格情報を入力すると、公開は正常に行われ、基になるMSBuildコマンドはAuthType = 'NTLM'を表示しますが、自分の資格情報も含めます。だから私は元のコマンドに戻っています! –
Visual Studio 2012の場合は、/ P:UserNameプロパティを完全に省略する必要があります。 – bmavity