Visual Studio または Visual Web Developer を使用した SQL Server Compact を含む ASP.NET Web アプリケーションの配置: フォルダーのアクセス許可の設定 - 6/12

著者: Tom Dykstra

スターター プロジェクトのダウンロード

このチュートリアル シリーズでは、Visual Studio 2012 RC または Visual Studio Express 2012 RC for Web を使用して、SQL Server Compact データベースを含む ASP.NET Web アプリケーション プロジェクトを、配置 (発行) する方法について説明します。 Web 発行の更新をインストールすれば、Visual Studio 2010 を使用することもできます。 シリーズの概要については、シリーズの最初のチュートリアルを参照してください。

Visual Studio 2012 の RC リリース以降に導入された配置機能の紹介や、SQL Server Compact 以外の SQL Server エディションの配置方法、Azure App Service Web Apps への配置方法などを解説したチュートリアルは、「Visual Studio を使用した ASP.NET Web 配置」をご覧ください。

概要

このチュートリアルでは、アプリケーションで Elmah フォルダーにログ ファイルを作成できるように、配置された Web サイトでそのフォルダーに対するフォルダー アクセス許可を設定します。

Visual Studio 開発サーバー (Cassini) を使用して Visual Studio で Web アプリケーションをテストするとき、アプリケーションはユーザーの ID で実行されます。 通常、ユーザーは開発用コンピューターの管理者であり、すべてのフォルダーのすべてのファイルに対して何でも行うことができる完全な権限を持っています。 ただし、アプリケーションが IIS で実行されるときは、サイトが割り当てられているアプリケーション プールに対して定義された ID で実行されます。 これは通常、アクセス許可が制限されているシステム定義のアカウントです。 既定では、Web アプリケーションのファイルとフォルダーに対する読み取りと実行のアクセス許可はありますが、書き込みアクセス権はありません。

このため、アプリケーションでファイルを作成または更新する場合に問題になりますが、これは Web アプリケーションで一般に必要なことです。 Contoso University アプリケーションで、Elmah はエラーの詳細を保存するため、Elmah フォルダーに XML ファイルを作成します。 Elmah のようなものを使わない場合でも、サイトによっては、ユーザーがファイルをアップロードしたり、サイト内のフォルダーにデータを書き込む他のタスクを実行したりできる場合があります。

注意: チュートリアルを行っていて、エラー メッセージが表示されたり、うまくいかない場合は、必ずトラブルシューティングに関するページを確認してください。

エラー ログとレポートのテスト

アプリケーションが (Visual Studio でテストしたときは動作したのに) IIS では正しく動作しない理由を調べるには、通常 Elmah によってログされるエラーを発生させてから、Elmah のエラー ログを開いて詳細を確認できます。 Elmah が XML ファイルを作成してエラーの詳細を格納できなかった場合、空のエラー レポートが表示されます。

ブラウザーを開いて http://localhost/ContosoUniversity に移動し、Studentsxxx.aspx のような無効な URL を要求します。 Web.config ファイルでの customErrors の設定が "RemoteOnly" であり、ローカル環境で IIS を実行しているため、GenericErrorPage.aspx ページの代わりにシステム生成のエラー ページが表示されます。

Error_page_Test

次に、Elmah.axd を実行してエラー レポートを表示します。 Elmah が Elmah フォルダーに XML ファイルを作成できなかったため、空のエラー ログ ページが表示されます。

Error_log_page_empty

Elmah フォルダーに対する書き込みアクセス許可の設定

フォルダーのアクセス許可の設定は、手動で行うことも、配置プロセスの自動部分にすることもできます。 自動で行うには MSBuild の複雑なコードが必要であり、これを行う必要があるのは初めて配置するときだけなので、このチュートリアルでは手動で行う方法のみを示します。 (配置プロセスのこの部分を行う方法については、Web 発行でのフォルダー アクセス許可の設定に関する Sayed Hashimi のブログをご覧ください)。

Windows エクスプローラーで、C:\inetpub\wwwroot\ContosoUniversity に移動します。 Elmah フォルダーを右クリックして [プロパティ] を選び、[セキュリティ] タブを選びます。

Elmah_folder_Properties_Security_tab

([グループ名またはユーザー名] の一覧に DefaultAppPool が表示されない場合は、このチュートリアルで指定したものとは異なる方法を使って、コンピューターに IIS と ASP.NET 4 を設定した可能性があります。その場合は、Contoso University アプリケーションに割り当てられているアプリケーション プールで使われている ID を確認して、その ID に書き込みアクセス許可を付与します。このチュートリアルの最後にあるアプリケーション プールの ID に関するリンクを参照してください。)

編集 をクリックします。 [Elmah のアクセス許可] ダイアログ ボックスで DefaultAppPool を選び、[許可] 列の [書き込み] チェック ボックスをオンにます。

Permissions_for_Elmah_dialog_box

両方のダイアログ ボックスで [OK] をクリックします。

エラー ログとレポートの再テスト

同じ方法 (無効な URL を要求する) でエラーをもう一度発生させてテストし、[エラー ログ] ページを実行します。 今回は、エラーがページに表示されます。

Elmah_Error_Log_page_Test

また、App_Data フォルダーに対する書き込みアクセス許可も必要です。そのフォルダーに SQL Server Compact データベース ファイルがあり、それらのデータベースのデータを更新できる必要があるためです。 ただし、その場合は、配置プロセスによって App_Data フォルダーに対する書き込みアクセス許可が自動的に設定されるため、追加の操作を行う必要はありません。

これで、ローカル コンピューター上の IIS で Contoso University を正しく動作させるために必要なすべてのタスクが完了しました。 次のチュートリアルでは、サイトをホスティング プロバイダーに配置することで、一般に公開します。

その他の情報

この例では、Elmah がログ ファイルを保存できなかった理由はかなり明白でした。 問題の原因がそれほど明らかでない場合は、IIS トレースを使用できます。IIS.net のサイトの「IIS 7 でトレースを使用して失敗した要求のトラブルシューティングを行う」をご覧ください。

アプリケーション プールの ID にアクセス許可を付与する方法について詳しくは、IIS.net のサイトの「アプリケーション プール ID」と「ファイル システム ACL を使用して IIS のコンテンツをセキュリティで保護する」をご覧ください。