適用対象: インターネット インフォメーション サービス
インターネット インフォメーション サービス (IIS) に組み込まれている優れたトラブルシューティング機能の 1 つは、失敗した要求トレースです。 この機能を使用すると、サーバーでトレース ルールを構成できます。これにより、定義したカスタムエラー状態の詳細なトラブルシューティング ログ ファイルが作成されます。 たとえば、HTTP 401 エラーのログ ファイルを作成するトレース規則を作成することで、認証エラーの詳細をキャプチャできます。
IIS の失敗した要求のトレースは、エラーを受動的にトレースするように構成できます。 つまり、サーバーをアクティブに監視していない場合でも、エラーが発生したときにログ ファイルを作成するトレース ルールを IIS に追加できます。 たとえば、この記事の手順では、HTTP 500 エラーが発生するたびにトレース ログを作成するトレース ルールを作成する方法を示します。 このパッシブ トレースの方法は "再現なし" トレースと呼ばれます。つまり、エラーが発生したかどうかを確認するためにサーバーのログを定期的に調べ、IIS がログを作成したときにのみアクションを実行できます。
ユーザー アクセス制御の操作
完全な管理アクセス許可を持つアカウントを使用して、この記事の手順に従っていることを確認するには、次のいずれかの方法を使用します。
- ローカル管理者アカウントを使用してコンピューターにサインインします。
- ローカル管理者アカウントではなく管理アクセス許可を持つアカウントを使用してサインインしている場合は、 管理者として実行 オプションを使用して、すべてのアプリケーションとすべてのコマンド プロンプト セッションを開きます。
これらの条件は、Windows のユーザー アカウント制御 (UAC) セキュリティ コンポーネントによって IIS 構成設定への管理アクセスが禁止されるために必要です。 UAC の詳細については、「 ユーザー アカウント制御」を参照してください。
失敗した要求トレースのインストール
失敗した要求トレースは、IIS に既定ではインストールされません。 Windows のバージョンに従って失敗した要求トレースをインストールします。
Windows クライアント オペレーティング システム
- [スタート] > [コントロール パネル] の順に選択します。
- コントロール パネルで、[ プログラムと機能> Windows の機能をオンまたはオフにするを選択します。
- インターネット インフォメーション サービス>World Wide Web Services>Health と Diagnostics を展開します。
- Tracing を選択し、OK を選択します。
Windows Server オペレーティング システム
- Start を選択し、Administrative Tools をポイントして、サーバー マネージャーを選択します。
- サーバー マネージャー階層ウィンドウで、Roles を展開し、 Web Server (IIS)を選択します。
- Web Server (IIS) ペインで、Role Services セクションまでスクロールし、[ロール サービスの追加] 選択。
- 役割サービスの追加ウィザードのページで役割サービスの追加ウィザードを選択し次へを選択。
- インストールの選択ページで、インストールを選択します。
- Results ページで、Close を選択します。
IIS の失敗した要求トレースのインストールの詳細については、「 Tracing <tracing>を参照してください。
失敗した要求トレースを有効にする方法
- Start を選択し、Administrative Tools をポイントして、インターネット インフォメーション サービス (IIS) マネージャーを選択します。
- Connections ペインで、失敗した要求トレースを構成するサーバー接続、サイト、アプリケーション、またはディレクトリを選択します。
- Actions ペインで、Failed Request Tracing... を選択します。
- [Web サイトの失敗した要求トレース設定の 編集 ] ダイアログ ボックスで、次のオプションを構成します。
- [有効にする] チェック ボックスをオンにしてトレースを有効にします。
- 既定値のままにするか、失敗した要求ログ ファイルを Directory ボックスに格納する新しいディレクトリを入力します。
- Maximum のトレース ファイル数 ボックスに、格納する失敗した要求トレース ファイルの数を入力します。
- [OK] を選択します。
Note
従来の ASP や ASP.NET の設定、またはその他の特定の条件の設定をカスタマイズすることもできますが、HTTP 500 エラーの一般的な規則は、Web サーバー上のさまざまなエラー状態を検出するのに役立ちます。
コマンド プロンプトから、次の構文で AppCmd.exe ユーティリティを使用して、失敗した要求トレースを有効にすることもできます。
appcmd.exe set config -section:system.applicationHost/sites /[name='Default Web Site'].traceFailedRequestsLogging.enabled:"True" /commit:apphost
appcmd.exe set config -section:system.applicationHost/sites /[name='Default Web Site'].traceFailedRequestsLogging.directory:"%SystemDrive%\inetpub\logs\FailedReqLogFiles" /commit:apphost
appcmd.exe set config -section:system.applicationHost/sites /[name='Default Web Site'].traceFailedRequestsLogging.maxLogFiles:"50" /commit:apphost
従来の ASP エラーのトラブルシューティング
このセクションでは、失敗した要求トレースが潜在的な問題の特定にどのように役立つのかを調べるために、クラシック ASP を使用していくつかのエラーを生成します。 これらの例では、エラーの原因がわかっている特定の状況を対象としていますが、提示されている手法を使用して、エラーの原因が不明な状況のトラブルシューティングを行うことができます。
HTTP 500 エラーのトラブルシューティング
ASP ページの実行に失敗すると、IIS は HTTP 500 エラーを返します。IIS の失敗した要求トレース機能がないと、これらの HTTP 500 エラーのトラブルシューティングが困難になる可能性があります。 これは、通常、システムのトラブルシューティングを積極的に行っていない場合に ASP エラーが発生するためです。そのため、IIS アクティビティ ログを検索し、ASP モジュールが失敗した要求のログ エントリに追加情報を返すことを望む場合があります。 失敗した要求のトレースを使用する次の例では、状況のトラブルシューティングに使用できるエラーの詳細な記録が存在します。
HTTP 500 エラーのトレース規則を追加する方法
次の手順では、HTTP 500 エラーの失敗した要求トレース規則を構成します。これは、後でクラシック ASP エラー メッセージのトラブルシューティングに使用します。
- Start を選択し、Administrative Tools をポイントして、インターネット インフォメーション サービス (IIS) マネージャーを選択します。
- Connections ペインで、失敗した要求トレースを構成する接続、サイト、アプリケーション、またはディレクトリに移動します。
- ホーム ウィンドウの [失敗した要求トレースの規則] をダブルクリックします。
- Actions ペインで、Add... を選択します。
- [失敗した要求トレース規則の追加] ウィザードの [トレースするコンテンツの指定] ページで、通常ではトレースするコンテンツ タイプを選択します。 この場合は、すべてのコンテンツの既定値をそのまま使用し、 Next を選択します。
- [ Define トレース条件 ページで、HTTP 500 エラーをトレースするために Status code(s) テキスト ボックスに「500」と入力し、 Next を選択します。
- トレース プロバイダーの選択 ページで、既定値をそのまま使用し、Finish を選択します。
無効な COM クラスを呼び出すページを作成する
このセクションでは、無効な COM クラスのインスタンスを作成しようとする ASP ページを調べます。この状況は、ほとんどの場合、有効な COM クラスのスペルミスによって生成されます。 この問題をテストするには、HTTP 500 エラーの失敗要求トレースを有効にした Web サイトの wwwroot フォルダーに、次の ASP コードをBad_class.aspとして保存します。
<html>
<body>
<h1>Bad Class</h1>
<%
Set objObject = CreateObject("Bad.Class.Name")
%>
</body>
</html>
Web ブラウザーを使用してこのファイルを参照すると、IIS は HTTP 500 エラー メッセージを返す必要があります。IIS は、既定で %SystemDrive%\Inetpub\FailedRequestLogFiles\W3SVCnnn フォルダーに作成された失敗した要求トレース ログを作成します。ここで、 W3SVCnnn には IIS マネージャーに一覧表示されている Web サイトの一意の識別子が含まれます。 失敗した要求トレースのログは XML ファイルであり、IIS は XML を Internet Explorer で開くことができるプレゼンテーション形式に変換する XSL ファイルを作成します。
Internet Explorer でトレース ログを読み取る
Edge ブラウザーで Internet Explorer または IE モードを使用して失敗した要求トレース ログ ファイルを開くと、さまざまな情報が Request Summary に表示されます。 この概要には、実行中の URL、アプリケーション プール、認証の種類とユーザー名など、エラー状態の一般的な環境情報が含まれます。 エラーの原因は状態コードであり、状態は HTTP 500 エラーであることがわかります。
概要の Errors and Warning セクションには、次の図に示すように、 ビュー トレース リンクが表示されます。
ビュー トレース リンクを選択すると、ブラウザーは ASP スクリプトエラーが発生したトレースのセクションにジャンプします。 個々のトレース イベントを展開すると、物理ファイル パス、行番号、ASP エラー コードと説明、エラーの原因となった ASP コードの抜粋 (この場合は、無効な COM クラスをインスタンス化しようとしたこと) など、イベントの特定の詳細を表示できます。
次の図に、例が示されています。
低速ページのトラブルシューティング
失敗した要求のトレースを構成して、HTTP エラーだけでなく、指定した時間間隔を超えるページのログ ファイルを生成できます。 実際の例では、Web ユーザーが Web サイトの一部が遅いように見えるが、影響を受けるページがわからないと訴えている場合は、その間隔を超えたページがある場合にログ ファイルを作成するためのトレース ルールを作成できます。 これで、ページを一覧表示するログ ファイルが IIS によって作成されるのを待って、影響を受けるページにトラブルシューティングの範囲を絞り込むことができます。 失敗した要求のトレースを使用しない場合は、実行に時間がかかるページについて、IIS アクティビティ ログにクエリを実行できます。しかし、問題自体ではなく、問題が発生しているページの一覧に範囲を絞り込むことまでしかできません。 次の例では、低速ページでエラーの原因を見つけます。
低速コンテンツのトレース規則を追加する方法
次の手順では、特定の期間を超える要求に対して失敗した要求トレースルールを構成します。これは、遅い ASP ページのトラブルシューティングに後で使用します。
- Start を選択し、Administrative Tools をポイントして、インターネット インフォメーション サービス (IIS) マネージャーを選択します。
- Connections ペインで、失敗した要求トレースを構成する接続、サイト、アプリケーション、またはディレクトリに移動します。
- ホーム ウィンドウの [失敗した要求トレースの規則] をダブルクリックします。
- 前の例で作成したルールを強調表示し、Actions ペインで Remove を選択します。
- Actions ペインで、Add... を選択します。
- [失敗した要求トレース規則の追加] ウィザードの [トレースするコンテンツの指定] ページで、通常ではトレースするコンテンツ タイプを選択します。 この場合は、すべてのコンテンツの既定値をそのまま使用し、 Next を選択します。
- [トレース条件の の定義 ページで、次の手順を実行します。
- Status コードのをクリアします。
- 時間 (秒単位) を選択します。
- 秒数として「 5 」と入力します。
- [次へ] を選択します。
- トレース プロバイダーの選択 ページで、既定値をそのまま使用し、Finish を選択します。
無限にループするページを作成する
このエラー状態では、無限にループするページを調べます。 この問題は、コードがデータベース テーブル内のリスト レコードをループ処理するときなどに、ユーザー セッションがループを正しく終了できない場合に発生します。 この問題をテストするには、次の ASP コードを、失敗した要求トレースを有効にした Web サイトの wwwroot フォルダーにSlow_page.aspとして保存します。
<html>
<body>
<h1>Slow Page</h1>
<%
Do
If Response.IsClientConnected = False Then
Exit Do
End If
Loop
%>
</body>
</html>
Web ブラウザーを使用してこのファイルを参照すると、Web ブラウザーにエラーは表示されませんが、ブラウザーからページが返されず、最終的にタイムアウトになる可能性があります。
Note
このページは、Web ブラウザーを閉じた後にループを終了するように記述されています。 スクリプトのタイムアウトに達する前にループを終了させる場合は、10 秒後にブラウザーを手動で閉じる必要があります。
5 秒後、IIS は既定で %SystemDrive%\Inetpub\FailedRequestLogFiles\W3SVCnnn フォルダーに失敗した要求トレース ログを作成します。このフォルダーには、web サイトの IIS マネージャーに記載されている一意の識別子が W3SVCnnn に含まれています。
Internet Explorer でトレース ログを読み取る
前の例に示すように、Microsoft Edge ブラウザーで Internet Explorer または IE モードを使用して失敗した要求トレース ログ ファイルを開くと、重要な情報が Request Summary に表示されます。 この概要には、実行中の URL、アプリケーション プール、認証の種類とユーザー名など、エラー状態の一般的な環境情報が含まれます。 失敗の理由は所要時間であり、時間は 5 秒をわずかに超えたことに注意してください。これは、失敗した要求トレース ルールに入力した時間です。
Note
また、応答の HTTP 状態コードが HTTP 200 で、これは正常な応答であることにも気付きます。 これは、多くの場合、遅いページの診断が困難になる要因の 1 つであり、応答が成功し、見つけにくくなります。
概要の Errors and Warning セクションには、次の図に示すように、 ビュー トレース リンクが表示されます。
ビュー trace リンクを選択すると、ブラウザーは ASP スクリプトエラーが発生したトレースのセクションに移動します。 個々のトレース イベントを展開すると、物理ファイル パス、行番号、ASP エラー コードと説明、ログ ファイルの作成時に実行されていた ASP コードの抜粋など、イベントの特定の詳細を表示できます。 この情報を使用すると、ASP ページを調べて、無限ループ内で実行されていたコード行を見つけることができます。
次の図に、例が示されています。
詳細
IIS の失敗した要求トレースの詳細については、次の記事を参照してください。