2011-09-16 6 views
3

Windows7上のIIS 7.0で奇妙で解決不可能な問題があります。
私は私のローカルテストサーバー上で実行するサイトを試してみて、次のエラーを取得:私はいくつかのプールを持っていますが、一つだけ、その中には正しく動作IIS 7:ID 'IIS APPPOOL DefaultAppPool'にtempディレクトリにアクセスするための十分なアクセス許可がありません。

Access to the temp directory is denied. 
Identity 'IIS APPPOOL\DefaultAppPool' under 
which XmlSerializer is running does not have sufficient permission 
to access the temp directory. 

CodeDom will use the user account the process is using to do the compilation, 
so if the user doesn't have access to system temp directory, 
you will not be able to compile. 
Use Path.GetTempPath() API to find out the temp directory location. 

を。それはクラシック.NET AppPoolです。他のサイトでサイトを実行するとエラーが発生します。これは先に提供されたものです。最も憂慮すべき点は、IISマネージャのアプリケーションプールを使用してプールの構成を変更することができないことです。多分私は何かを見逃しているでしょうか?
Windows\TempC:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files、およびlocal settings' temporary folderのアクセス権を変更しようとしましたが、私の行動に影響がありませんでした。

あなたの助けといくつかのアドバイスをお願いします。

答えて

2

Path.GetTempPath()メソッドを呼び出しましたか(この方法はすべてのプログラムから呼び出すことができますが、ウェブサイトからは不要です)。

アカウントのこのパスへのフルアクセスを設定する必要があります。

はまた、私はthis forum topicが見つかりました:

Another reason could be that the processModel in machine.config is set so that ASP.Net is running inside dllhost.exe instead of aspnet_wp.exe. If this is the case then you would need to give rights to IWAM_machineName account as well.

You can check the name of the process and account under with access denied error occurs by using FileMon utility from sysinternals.com.

0

考慮すべきもう一つの選択肢...のDefaultAppPoolは「C:\ユーザー」の下に、独自のユーザーアカウントとフォルダを作成し、プールの作成時にディレクトリと最初の実行。実際には仮想ユーザーアカウントであり、アプリケーションプールまたは "DefaultAppPool"の名前にする必要があります。この一時的なユーザーアカウントを使用してプールを実行します。いくつかの設定では、このフォルダは表示されず、IIs WebサイトにアクセスしてDefaultプールを使用するときはTEMPフォルダが表示されます。このUserフォルダは、IIs、ASP.NET、およびこの仮想アカウントで使用されるファイルリソースやその他のもののキャッシングと書き込みに、プールとASP.NETによって使用されます。

ユーザーフォルダに "TEMP"フォルダが表示されている場合は、IIsとレジストリに壊れたアプリケーションプールアカウントがあります。プールはこの仮想アカウントのバックアップとしてTEMPフォルダを作成していますが、適切なセキュリティ設定がない可能性があります。私はこの正確なシナリオを持っていました。レジストリに行くの下でそれを修正する

:あなたはのDefaultAppPoolユーザーアカウントの「.BAK」拡張子のSIDのユーザーアカウントを持っている場合は、Microsoft \ Windows NTの\ CurrentVersionの\ ProfileListの\ HKEY_LOCAL_MACHINE \ソフトウェアを を参照してください。削除した場合は、PCを再起動してください。実際にDefaultAppPoolを使用するように設定して、Webサイトを再度テストします。これで、ユーザーの "DefaultAppPool"フォルダを再作成し、DefaultAppPoolユーザーのレジストリエントリを再作成して、エラーを取り除く必要があります。 TEMPフォルダはありません。

これを実行した後、私のすべてのスタックオーバーフローエラーは、WebアプリケーションとIIのアプリケーションプールのすべての再起動と最終的なクラッシュのためにVisual Studioでなくなりました。

関連する問題