web-dev-qa-db-ja.com

IIS ApplicationPoolIdentityには「一時ASP.NETファイル」への書き込み権限がありません

「ApplicationPoolIdentity」を使用する「SomeAppPool」という「AppPool」からWebサイトを起動しようとしていますが、Webサイトを起動すると次のエラーが表示されます。

現在のID(IIS_APPPOOL\SomeAppPool)には、「c:\ WINDOWS\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files」への書き込みアクセス権がありません

Windows 8でVisual Studio 2012(デバッガーがアタッチされていない)内で 'Use Local IIS Web Server')を使用してWebサイトを起動しています。

最初に気づいたのは、「Temporary ASP.NET Files」フォルダーが存在しないため、セキュリティ権限を設定するものがないことです。

2番目の問題は、フォルダーがあったとしても、どのようなアクセス許可を設定しますか? 「ApplicationPoolIdentity」で作成された各ユーザーにアクセス許可を設定する必要はないと想定しています。右?

私が見た現在のソリューションは、ユーザーを「ネットワークサービス」に設定することを単に提案していますが、これは「ApplicationPoolIdentity」が導入されたWebサイトの分離を壊しているようです。

33
karmasponge

このASP.NETフォーラムの回答 は、スレッドで未確認ですが、解決策でした。また、影響は小さく、IISを再登録したり、ユーザーに危険な特権を与えたりしません。答えを要約すると、次のようになります。

  1. 管理者としてコマンドウィンドウを開きます([スタート]/[プログラム]/[アクセサリ]をクリックし、[コマンドプロンプト]を右クリックして、[管理者として実行]を選択します)。
  2. 次のコマンドを入力します。

    C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Aspnet_regiis.exe -ga domain\user
    

上記の例のdomain\userをドメインとユーザーに置き換えます。それだけで十分です。

Aspnet_regiis.exeのMicrosoftドキュメントは here です。 -gaスイッチのドキュメントは、ローカルアカウントでは機能しないバージョン3.5以前のバグに言及していることに注意してください。正しく読んでいる場合、ドメインアカウントはすべてのバージョンでサポートされており、ローカルアカウントはFramework 4.0以降でサポートされています。


2017年6月6日更新:Windows 8以降では、代わりにdismコマンドを検討してください。 this SO answer で説明されています。これを提案してくれた@codebrainに感謝します。


2015年7月7日更新:@Vertigoは、この回答が.NET 2.0の2008R2/2012の下のNETWORK SERVICEアカウントでも機能すると親切にコメントしました。 4.0より前のローカルアカウントに関する上記の免責事項は間違っている可能性があります。

他の誰かがこれが.NET 3.5以前のローカルアカウントで機能することを発見した場合は、お気軽に回答を編集するか、コメントにメモしてください。これは、同じ問題を経験する可能性のある他の人にとって大きな助けになるでしょう。

76
Ed Gibbs

賛成のソリューションに加えて、ディスク容量を確認し、十分なディスク容量があることを確認してください。

実稼働サーバーの1つでこの問題に遭遇しましたが、これはディスク容量の不足に関連していました。

7
Dilish

私は同じ問題に直面しました。パスc:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\を探してTemporary ASP.NET Filesを探しましたが、この名前のフォルダーはありませんでした。そのため、新しいフォルダーを手動で作成し、Temporary ASP.NET Filesという名前を付けて、問題を修正しました。

したがって、上記のパスが存在することを確認してください。

6
Behnam

アプリケーションプールが使用するユーザーをIIS_IUSRSグループに追加して、エラーを解決しました。

5
Alocyte

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319aspnet_regiis.exeコマンド。

通常、アクセス許可を設定する必要があります。 Windowsのプログラムの追加と削除が発生した場合、または新しい.NETバージョンがインストールされた場合、これらは少しリセットされます。 aspnet_regiis.exeそこに役立つはずです。

また、管理者としてVisual Studioを実行していることを確認してください。

1
Raja Nadar

私はこれに出くわしたばかりで、新しいアカウントを作成することでした。「Webby」と言います。

ISSで、ページの[詳細設定]に移動し、[物理パス資格情報]をWebbyアカウントに変更します。上記のWebページディレクトリがある[パス]フィールド。エクスプローラーでこのフォルダーを開き、変更権限を持つWebbyを追加します。 「Failed Request Tracing」の下には、ログディレクトリがあります。それにも変更を加えて、「Enabled」をtrueに設定します(後でオフにできますが、動作することを確認してください)。この時点でサイトを試すことができ、使用しているユーザーのために間違いなくエラーメッセージが表示されます。

現在のID(YOUR\Webby)には、「C:\ Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files」への書き込みアクセス権がありません。

ここで、問題を修正するには、「C:\ Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files」ディレクトリに移動し、それにWebbyを追加する必要があります。再度変更を行います。

ウェブサイト専用の特別なアカウントを使用するソリューションは良い考えです。これは実際のアカウント(ApplicationPoolのような仮想アカウントではない)であり、Windowsは混乱しません(...簡単に)。

お役に立てれば。

0
Engineer

ディスク領域を解放して解決しました

0
Shimon Doodkin

IIS7では、仮想ディレクトリを右クリックし、アプリケーションを削除して再度追加しました。それは私のためにそれを修正しました。

0
Dave