この記事は、Web アプリケーションが ASP.NET App_Data フォルダーにデータを書き込むときにエラー (アクセス拒否) が発生する問題を解決するのに役立ちます。
元の製品バージョン: インターネット インフォメーション サービス 7.5 以降のバージョン
元の KB 番号: 2005172
現象
Web アプリケーションは Microsoft Visual Studio を使用して作成され、インターネット インフォメーション サービス (IIS) 7.5 以降のバージョンに発行されます。 アプリケーションの要求処理の一環として、サーバー上の App_Data フォルダーにデータを書き込む必要があります。 たとえば、アプリケーションは SQLDataSource または XMLDataSourceを使用します。 これを試みると、次のようなエラー メッセージが表示されます。
例外の詳細: System.UnauthorizedAccessException: パス [App_Data フォルダーへのパス] へのアクセスが拒否されました。
原因
IIS 7.5 以降のバージョンでは、アプリケーション プールの既定の ID は ApplicationPoolIdentity です。 Visual Studio を使用して Web アプリケーションを作成すると、ApplicationPoolIdentity の書き込みアクセスを許可するように App_Data フォルダーが自動的に構成されません。 そのため、 App_Data フォルダーへの書き込みは失敗します。
解決方法
この動作を回避するには、 App_Data フォルダーの ApplicationPoolIdentity (IIS APPPOOL\ApplicationPool) に対する読み取りと書き込みの両方の ACL アクセス許可を付与します。
詳細
ApplicationPoolIdentity は、Windows Server 2008 R2 で導入された新しい概念であるマネージド サービス アカウントです。 マネージド サービス アカウントの詳細については、「 サービス アカウントの新機能」を参照してください。