SQL Server Compact 4.0を使っているASP.NETアプリケーションを配置する際の注意点

 ASP.NETアプリケーションで[新しい項目の追加]から「SQL Server Compact 4.0 ローカル データベース」を追加すると、以下のようなダイアログが表示され、sdfファイルはApp_Dataフォルダに配置されます。





 Visual Studio開発サーバーではなく、IIS上で実行する場合にはApp_Dataフォルダに対してASP.NETワーカープロセスのアカウントのアクセス権が必要になります。このASP.NETワーカープロセスの既定のアカウントはOSのバージョンによって異なるため注意が必要です。

OS 既定のASP.NETワーカープロセスアカウント
Windows 2000
Windows XP
ASPNET
Windows Server 2003
Windows Vista
Windows Server 2008
NETWORK SERVICE
Windows Vista SP2
Windows Server 2008 SP2
Windows 7
Windows Server 2008 R2
アプリケーションプールIDアカウント



 アプリケーションプールIDアカウントとはアプリケーションプールごとに作られる仮想アカウントで、そのアカウント名はアプリケーションプール名と同一です。ただし、仮想アカウントであるため、通常のユーザー一覧には表示されません。[名前の確認]において「IIS AppPool\DefaultAppPool」のように入力する必要があります。





 このことは以下のページで説明されています。

アプリケーション プール ID



 なお、Visual Studio 2010の[Webの発行]機能を使用してIISに配置すると、App_Dataフォルダには自動的にDefaultAppPoolアカウントの「読み取り」と「書き込み」の権限が設定されます。ただし、DefaultAppPoolアプリケーションプールの.NET Frameworkバージョンは既定ではv2.0となっており、v4.0のアプリケーションプール名はASP.NET v4.0です。「IIS AppPool\ASP.NET v4.0」というアカウントにアクセス権を付与する必要があります。


 もしくはVisual Studio開発サーバーではなくIISを開発サーバーに設定し、[Web のパッケージ化/発行]の[配置する項目(Web 配置にのみ適用)]で[IIS で構成された IIS 設定を含める]と[この Webプロジェクトで使用するアプリケーション プール設定を含める]のチェックボックスをチェックして[Webの発行]を行えば、「IIS AppPool\ASP.NET v4.0」のアクセス権も自動的に作成されます。