QA@IT

エラー「Windows プロセス アクティブ化サービスが、アプリケーション プール 'DefaultAppPool' 用のアプリケーション プール構成ファイルを生成できませんでした。」が発生

13706 PV

現在WCFを用いたC/S型のシステムを製造しています。
工程は試験工程で、障害が発生した場合、修正を行い、試験用サーバに資産をデプロイする作業を行います。
このときサーバサイドの資産を修正後、試験環境のIISにデプロイすると掲題のエラーがイベントログに時々出力されます。
何が原因なのでしょうか?
エラーメッセージの全文は下記の通りです。
「Windows プロセス アクティブ化サービスが、アプリケーション プール 'DefaultAppPool' 用のアプリケーション プール構成ファイルを生成できませんでした。エラーの種類は '7' です。この問題を解決するには、applicationhost.config ファイルが正しいことを確認し、最近行った構成の変更を再度確定してください。データ フィールドには、エラー番号が表示されています。」

なお、エラーが出たからと言ってデプロイに失敗しているわけではないようで、サービスは正しく動作しています。
またいくつかのサーバに対して同一の資産をデプロイするのですが、掲題のエラーが発生するのは一部のサーバのみです。

<エラーの詳細>
イベントソース:Microsoft-Windows-WAS
イベントID :5189

<デプロイの流れ>
デプロイの流れは以下のようになっています。

1.下記のコマンドを用いてIIS上から現在配備されているwcfサービスを一旦削除
  appcmd delete app /app.name:[サービス名]

2.wwwroot配下に配備したいwcfサービスの資産(プリコンパイル済み)をコピー

3.下記のコマンドを用いてIIS上にwcfサービスを再登録
  appcmd add app /site.name:[サイト名] /path:[2.で配置した資産の仮想パス(/xxx/サービス名)] /physicalPath:[2.で配置した資産のファイルシステム上のフルパス]

<エラー発生条件>
いくつかのサーバに対して同一の資産をデプロイするのですが、掲題のエラーが発生するのは一部のサーバのみです。
それもデプロイの度に毎回発生するのではなく、時々発生します。発生するサーバはいつも同じです。
サーバの状態などを詳細に調べたいところなのですが、運用上の事情であまり詳しく調べることができません。
また、諸般の事情で<デプロイのプロセス>にあるどの手順でエラーが発生しているのかが特定できていません。

<これまで取った対応>
下記サイトに掲載されていた事項を実践しました。
http://technet.microsoft.com/en-us/library/cc734988(v=ws.10).aspx

英語力にはあまり自信がないので、細かいところで思い違いをしている可能性はありますが、
掲載されているApplicationHost.configのチェックを行ったところ、特に問題はありませんでした。

ただ、
The Internet Information Services (IIS) Application Host Helper Service requires access to a directory
in which it can store temporary configuration files that it creates at run-time for application pools.
The directory must be available to WAS and cannot be on a UNC path.
訳)IISはAPPプールのために動作時に作られる一時的な設定ファイルを格納するディレクトリにアクセスを要求する。
そのディレクトリはWASが利用可能である必要があり、UNCパスは使用できない。

という冒頭のくだりにある設定ファイルを格納するパスというのが今一つどこなのかわからないので気にはなります。
ほぼデフォルト設定でIISを使っているので、UNCパスを利用しているなどの問題は無いと思いますが・・・。
訳が間違っているなど勘違いがあればご指摘いただけると幸いです。

<バージョン情報>
OS: Windows Server 2008 R2 SP-1 Standard Edition
IIS: 7.5
ASP.NET:V2.0.50727

回答

WCF の知識はほとんどない自分がレスするのもなんですが・・・

directory in which it can store temporary configuration files

設定ファイルを格納するパスというのが今一つどこなのかわからないので気にはなります。

と言うのは以下のフォルダのことだと思います。

C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files

IIS で ASP.NET をホストする場合、IIS のワーカープロセスが一時ファイルに対するアクセス権が必要です。IIS をインストールした時に、何もしなくても、設定済み(そのフォルダの ACL に IIS_IUSRS グループが設定済み)かも知れませんが。

ワーカープロセスとか IIS_IUSRS グループが何かわからない場合は以下のページを見てください。

アプリケーション プール ID
http://technet.microsoft.com/ja-jp/library/ee886292.aspx

IIS 7.0 での組み込みユーザーとグループ アカウントとは
http://technet.microsoft.com/ja-jp/library/dd939094.aspx

編集 履歴 (0)
  • レス遅くなり失礼いたしました。他環境で色々試しましたが、残念ながら一時フォルダ「Temporary ASP~」については関係がないようです。一時フォルダの所在については勉強になりました。ありがとうございました。 -
ウォッチ

この質問への回答やコメントをメールでお知らせします。