Visual Studio を使用した web 配置の ASP.NET: フォルダーのアクセス許可の設定

作成者: Tom Dykstra

スタート プロジェクトをダウンロードする

このチュートリアル シリーズでは、Visual Studio 2012 または Visual Studio 2010 を使用して、ASP.NET Web アプリケーションをAzure App Service Web Appsまたはサード パーティのホスティング プロバイダーに展開 (発行) する方法について説明します。 シリーズの詳細については、シリーズ の最初のチュートリアルを参照してください。

概要

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

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

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

アラーム: チュートリアルを実行するときにエラー メッセージが表示されたり、何かが機能しない場合は、トラブルシューティング ページを必ずチェックしてください。

エラーログとレポートをテストする

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

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

HTTP 404 エラー ページ

に Elmah.axd を実行して、エラー レポートを表示します。 管理者アカウントの資格情報 ("admin" と "devpwd") を使用してログインすると、Elmah が Elmah フォルダーに XML ファイルを作成できなかったため、空のエラー ログ ページが表示されます。

エラー ログが空です

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

フォルダーのアクセス許可を手動で設定することも、展開プロセスの自動部分にすることもできます。 自動にするためには複雑な MSBuild コードが必要であり、初めてデプロイする場合にのみこれを行う必要があるため、手動で行う方法を次に示します。 (展開プロセスのこの部分を作成する方法については、Sayed Hashimi のブログの 「Web 発行でのフォルダーのアクセス許可の設定 」を参照してください)。

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

  2. [編集] をクリックします。

  3. [Elmah のアクセス許可] ダイアログ ボックスで、[DefaultAppPool] を選択し、[許可] 列の [書き込みチェック] ボックスを選択します。

    ELMAH フォルダーのアクセス許可

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

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

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

ELMAH エラー ログ ページ

まとめ

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

詳細情報

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

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