アップデート:
最近のコメントに答えるために...私は次の情報を見つけましたが、うまくいきませんでした。
- コントロールパネルの[プログラムと機能]に移動します。
- 「MicrosoftWebDeploy3.0セットアップ」を見つけます
- プログラムを右クリックし、「変更」をクリックします。
- 3つのオプションから、[インストールメニューの変更、修復、または削除]から[変更]を選択します。
- IIS展開ハンドラーの下には、通常はオフになっている[管理者以外の展開用に構成する]オプションがあります。このオプションをチェックして、[次へ]をクリックします。
- インストールを終了します。
これにより、管理委任UIの下に追加のオプションが設定され、管理者以外のアカウントをアプリケーションにデプロイできるようになります。あるサーバーでは機能しますが、別のサーバーでは機能しません。これを機能させるために時間を使い果たしました。私の他の解決策はこれを行うことでした:
- ビルドは専任のチームによって管理されます。TFSのすべてのプロジェクトで「ビルド定義の表示/編集」を制限しました。
- ビルドアカウントはADMINSのままにします。
- パスワードは定義に残しました。
どちらのソリューションも機能しますが、私は前者の方が好きです。ある日、2つのサーバーの違いを理解し、別の更新を投稿します。
トラブルシューティングを3日間続けます-私は公式に困惑しています。
TFSビルドログからのエラーの詳細
MSDeployPublish:
Web配置を開始するアプリケーション/パッケージをhttps://XX.XX.XX.XX:8172 / msdeploy.axd?site = Default%20Web%20Site ..に公開します。
source:package(D:\ Builds \ Sources \ ProjectA.zip)からDestination:auto()へのWeb展開タスクを開始します。
setAcl(デフォルトのWebサイト/テスト)を更新しています。
C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ Web \ Microsoft.Web.Publishing.targets(3847,5):エラー:Web展開タスクが失敗しました。((2/19/20139: 58:23 AM)リモートコンピューターで要求が処理されたときにエラーが発生しました。)[D:\ Builds \ Sources \ ProjectA.csproj]
C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ Web \ Microsoft.Web.Publishing.targets(3847,5):エラー:[D:\ Builds \ Sources \ ProjectA.csproj]
C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ Web \ Microsoft.Web.Publishing.targets(3847,5):エラー:(2/19/2013 9:58:23 AM)要求がリモートコンピューターで処理されたときにエラーが発生しました。[D:\ Builds \ Sources \ ProjectA.csproj]
C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ Web \ Microsoft.Web.Publishing.targets(3847,5):エラー:サーバーで要求の処理中に問題が発生しました。詳細については、サーバー管理者に問い合わせてください。[D:\ Builds \ Sources \ ProjectAcsproj]
公開はデプロイに失敗しました。
プロジェクト"D:\ Builds \ Sources \ ProjectA.csproj"(デフォルトのターゲット)の構築が完了しました-失敗しました。プロジェクト"D:\ Builds \ Sources \ ProjectWeb.csproj"(デフォルトのターゲット)の構築が完了しました-失敗しました。
ビルドに失敗しました。
私には3つの環境があります。開発、QAおよび生産
開発とQAには非本番ビルドアカウントがあります。ProductionにはProductionBuildアカウントがあります。
デプロイメントは、実稼働サーバーの1つと、すべての開発サーバーおよびQAサーバーで機能します。しかし、他ではありません。これらは、さまざまなWebアプリケーションをホストする個別のサーバーです。負荷分散されていないか、Webファームの一部ではありません。
これは権限の問題だと思いますが、この問題はサーバーの1つにのみ存在します。この展開を機能させるには、管理者としてボックスに本番環境のtfsビルドアカウントを設定する必要があります。または、Webアプリケーションフォルダのすべてのユーザーにフルコントロールを付与します。どちらも好ましくありません。言うまでもなく、他のどのサーバーもそのようにセットアップされていません。
展開中に、展開の最初のステップでACL権限が間違っていることに気付きました。Webアプリケーションフォルダーは、ビルドアカウントに特別なアクセス許可を付与しています。他の環境では、その権限が設定されることはありません。なぜこれが起こっているのか私にはわかりません。おそらくそれはワークフローの即時のステップですが、私にはわかりません。
すべての機能委任オプションは、このWebサイトに従って設定されています。私はそれを数回実装したので、それらが正しいことを知っています。リンクで指定されていないのは、機能ルールでビルドアカウントを許可することです。そのすべてがアプリケーションからトップレベルのサイトに設定されます。
TFSのQAビルドを本番環境にデプロイするように切り替えると、同じ問題で失敗します。したがって、これはビルド定義ではありません。管理者または全員に権限を付与すると、プロジェクトや構成ではないように機能します。
MSBuildの引数
/p:DeployOnBuild=True /p:DeployTarget=MsDeployPublish
/p:CreatePackageOnPublish=True /p:MSDeployPublishMethod=WMSVC
/p:MSDeployServiceUrl=https://XX.XX.XX.XX:8172/msdeploy.axd
/p:DeployIisAppPath="Default Web Site/Test"
/p:UserName=DOMAIN\ProdBuildAccount /p:Password=*******
/p:AllowUntrustedCertificate=True
ビルドが正常にキューに入れられた後、展開はチームエクスプローラーから開始されます。
また、package.zipを取得してIISに手動でインポートすると、ACLは正しく、完全に展開されます。