次の方法で共有


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

Tom Dykstra著

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

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

概要

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

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

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

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

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

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

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

HTTP 404 エラー ページ

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

エラー ログが空です

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

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

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

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

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

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

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

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

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

ELMAH エラー ログ ページ

まとめ

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

詳細情報

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

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