次の方法で共有


IIS 7 でトレースを使用して失敗した要求のトラブルシューティング

適用対象: インターネット インフォメーション サービス 7.0

メモ

この記事は IIS 7.0 に適用されます。 新しいバージョンについては、 IIS 8.5 のトレースを使用して失敗した要求のトラブルシューティングを参照してください。

要求ベースのトレースは、スタンドアロンの IIS サーバーと Azure Web アプリの両方で使用でき、発生している問題を再現できる場合に、要求で何が正確に行われているのか、その理由を判断する方法を提供します。 要求でのパフォーマンスの低下や認証関連のエラー、ASP または ASP.NET からのサーバー 500 エラーなどの問題は、多くの場合、発生したタイミングで問題のトレースをキャプチャしていない限り、トラブルシューティングは困難です。 この記事では、IIS サーバーでの失敗した要求トレースについて説明します。 Azure Web アプリでこれを行う方法の詳細については、「 Visual Studio を使用した Azure App Service でのアプリのトラブルシューティング」を参照してください。

失敗した要求トレースは、要求のトレース イベントをバッファーし、要求が失敗した場合にのみディスクにフラッシュするように設計されています。ここで、"failure" の定義を指定します。 404.2 エラー メッセージが表示される理由や、要求が停止する理由を知りたい場合は、失敗要求のトレースを使用します。

この記事で説明するタスクは次のとおりです。

  • 失敗した要求トレース モジュールの有効化。
  • 失敗したリクエストのトレースログファイルの意味づけを構成する。
  • 失敗した要求トレースを保持する URL の定義 (エラー定義やトレースする領域を含む)。
  • エラー状態を生成し、結果のトレースを表示する。

前提条件

IIS のインストール

この記事のタスクを実行するには、あらかじめ IIS 7 以降をインストールしておく必要があります。 IIS がインストールされているかを確認するために http://localhost/ にアクセスします。 IIS がインストールされていない場合のインストール手順については、「 Windows Server 2008 への IIS のインストール」を参照してください。 IIS をインストールするときは、次の機能もインストールしてください。

  • ASP.NET ( World Wide Web サービス - アプリケーション開発機能 - ASP.NET)
  • トレース (ワールド ワイド ウェブ サービス - ヘルスと診断 - トレース)

管理者としてサインインする

ログインに使用するアカウントが管理者アカウントであるか、Administrators グループに属していることを確認します。

メモ

Administrators グループに含まれていると、既定では完全な管理者ユーザー権限は付与されません。 アプリケーションを管理者として実行する必要があります。そのためには、アプリケーション アイコンを右クリックし、[ 管理者として実行] を選択します。

バックアップを作成する

次のセクションのタスクを実行する前に、構成のバックアップを作成する必要があります。

構成のバックアップを作成するには、次の手順に従います。

  1. [スタート>すべてのプログラム>アクセサリ] を選択します。

  2. コマンド プロンプトを右クリックし、[管理者として実行] を選択します。

    コマンド プロンプトのコンテキスト メニューを示すスクリーンショット。[管理者として実行] が選択されています。

  3. コマンド プロンプトで次のコマンドを実行します。

    %windir%\system32\inetsrv\appcmd add backup cleanInstall
    

サンプル コンテンツを作成する

  1. %systemdrive%\inetpub\wwwroot に移動します。

  2. コンテンツを安全な場所に移動するか (既存のコンテンツを復元する場合)、削除します。

  3. 空のファイルを作成し、 test.asp名前を付けます

  4. コマンド プロンプトで、\inetpub\wwwroottest.asp ファイルに移動します。

  5. test.asp ファイルに、次の内容を貼り付けます。

    <h2>Failed Request Tracing Lab</h2><br>
    <br>Today's date is <% response.write(Date()) %>
    

ASP を無効にする

このタスクでは ASP を無効にする必要があります。 ASP を無効にするのは、あくまで例示であり、この記事のタスクの目的のためです。

ASP を無効にするには

  1. [インターネット インフォメーション サービス (IIS) マネージャー] を開きます。

  2. ISAPI と CGI の制限をダブルクリックします

    I S A P I と C G I の制限が選択された I I S マネージャーを示すスクリーンショット。

  3. [Active Server Pages]\(アクティブ サーバー ページ\) を選択します[操作] ウィンドウで、[拒否] を選択して ASP を無効にします。

    [I S A P I] と [C G I の制限と操作] ウィンドウが開いているのを示すスクリーンショット。

失敗した要求トレースを有効にします

失敗した要求トレースを有効にした後、ログ ファイルが存在する場所を構成する必要があります。 このタスクでは、既定の Web サイトに対して失敗した要求トレースを有効にし、ログ ファイルを配置する場所を指定します。 次に、エラー ログを生成するために、障害条件を構成します。

手順 1: サイトの失敗した要求トレースを有効にし、ログ ファイル ディレクトリを構成する

  1. 管理者権限でコマンド プロンプトを開き、 \windows\system32\inetsrv%systemdrive% に移動します。

  2. inetmgrを実行して IIS マネージャーを開きます。

  3. [ 接続 ] ウィンドウで、コンピューター名を展開し、[ サイト] を展開して、[ 既定の Web サイト] を選択します。

  4. [操作] ウィンドウの [構成] で、[失敗した要求トレース] を選択します。

    [構成] の [失敗した要求トレース] を示すスクリーンショット。

  5. [ Web サイトの失敗した要求トレース設定の編集 ] ダイアログ ボックスで、次の構成を行います。

    • [有効] チェック ボックスをオンにします。
    • 他の設定については、既定値をそのまま使用します。

    [Web サイトの失敗した要求トレース設定の編集] ダイアログ ボックスを示すスクリーンショット。[有効] が選択されています。

  6. [ OK] を選択します

失敗した要求トレースログが既定の Web サイトで有効になりました。 \system32\inetsrv\config\applicationHost.config ファイル%windir%を調べて、構成が次のようであることを確認します。

<system.applicationHost>
   <sites> 
      <!-- site & app defaults --> 
      <site name="Default Web Site" id="1"> 
         <!-- other site configuration --> 
         <traceFailedRequestsLogging  enabled="true" /> 
      </site> 
   </sites> 
</system.applicationHost>

手順 2: エラー定義を構成する

この手順では、トレースする領域を含め、URL のエラー定義を構成します。 まだ有効になっていない拡張機能への要求について、IIS によって返される 404.2 のトラブルシューティングを行います。 これは、有効にする必要がある特定の拡張機能を決定するのに役立ちます。

  1. 管理者権限でコマンド プロンプトを開き、 \windows\system32\inetsrv%systemdrive% に移動します。

  2. inetmgrを実行して IIS マネージャーを開きます。

  3. [ 接続 ] ウィンドウで、コンピューター名を展開し、[ サイト] を展開して、[ 既定の Web サイト] を選択します。

  4. 失敗した要求トレース規則 をダブルクリックします。

    [既定の Web サイトホーム] ウィンドウと [失敗した要求トレースルール] が選択されているスクリーンショット。

  5. [完了] を選択します

  6. [操作] ウィンドウで、[追加] を選択します。

  7. [失敗した要求トレース規則の追加] ウィザードの [トレースするコンテンツの指定] ページで、[すべてのコンテンツ (*)] を選択します。 [ 次へ] を選択します。

    [すべてのコンテンツ] が選択された状態の [失敗した要求トレース規則の追加] ウィザードのスクリーンショット。

  8. [ トレース条件の定義 ] ページで、[ 状態コード ] チェック ボックスをオンにし、トレースする状態コードとして 「404.2 」と入力します。

    [トレース条件の定義] ページを示すスクリーンショット。状態コードは、[状態コード] フィールドで 404 ドット 2 で選択されます。

  9. [ 次へ] を選択します。

  10. [ トレース プロバイダーの選択 ] ページの [ プロバイダー] で、[ WWW サーバー ] チェック ボックスをオンにします。 [ 領域] で 、[ セキュリティ ] チェック ボックスをオンにし、他のすべてのチェック ボックスをオフにします。

    あなたが引き起こしている問題によって、セキュリティエラーのトレースイベントが発生します。 一般に、認証と承認 (ISAPI 制限リストの問題を含む) の問題は、トレース用の WWW Server - セキュリティ領域構成を使用して診断できます。 ただし、 FREB.xsl スタイル シートはエラーと警告を強調表示するのに役立つので、既定の構成を使用して、すべての領域とプロバイダーのすべてのイベントをログに記録できます。 詳細詳細 を選択します。

    [トレース プロバイダーの選択] ページを示すスクリーンショット。[プロバイダー] で [W W W Server] が選択され、[詳細] の下で [セキュリティ] が選択されています。

  11. [完了] を選択します既定の Web サイトには、次の定義が表示されます。

    [失敗した要求トレース ルール] ウィンドウを示すスクリーンショット。W W W サーバーが [関連プロバイダー] の下に表示されます。

この構成は、IIS マネージャーによって %windir%\system32\inetsrv\config\applicationHost.config ファイルに <___location> タグを使用して書き込まれます。 この構成は次のようになります。

<___location path="Default Web Site"> 
    <system.webServer> 
        <tracing> 
            <traceFailedRequests> 
                <add path="*"> 
                    <traceAreas> 
                        <add provider="WWW Server" areas="Security" verbosity="Verbose" /> 
                    </traceAreas> 
                    <failureDefinitions statusCodes="404.2" /> 
                </add> 
            </traceFailedRequests> 
        </tracing> 
    </system.webServer> 
</___location>

エラー要求ログ ファイルをテストして表示する

このタスクでは、失敗した要求を生成し、結果のトレース ログを表示します。 HTTP 応答コード 404.2 で失敗する http://localhost/*.asp 要求のトレース ログをキャプチャするように IIS を既に構成しました。 今度は、それが正しく動作することを確認します。

手順 1: エラーとエラー要求ログ ファイルを生成する

  1. 新しい Internet Explorer ウィンドウを開きます。

  2. 次のアドレスを入力します: http://localhost/test.asp

  3. "HTTP エラー 404.2 - 見つかりません" エラーが表示されます。

    [アプリケーションの既定の Web サイトでのサーバー エラー] というタイトルの Web ページを示すスクリーンショット。エラーの概要の下に、H T T P エラー 404 ドット 2 が見つかりませんと表示されます。

手順 2: エラー要求ログ ファイルを表示する

  1. 失敗した要求が生成されたので、管理者権限でコマンド プロンプトを開き、 \inetpub\logs\FailedReqLogFiles\W3SVC1%systemdrive%に移動します。

  2. スタート画面を実行して、ディレクトリから Internet Explorer ウィンドウを起動します。

    W 3 S V C 1 パスに移動する Internet Explorer を示すスクリーンショット。フレッブと f r 0 0 0 0 0 1 の 2 つのファイルが一覧表示されます。

  3. ここでいくつかの点に注意してください。IIS は、失敗した要求のログ ファイルを書き込むとき、失敗した要求ごとに 1 つのファイルを出力します。 freb.xsl スタイル シートも、ディレクトリごとに 1 つずつ書き込まれます。 これは、結果として得られるエラー要求ログ ファイル (このサンプル のfr000001.xml など) を表示するときに役立ちます。

  4. 404.2 エラーのログファイルを右クリックし、プログラムを指定して開く>Internet Explorer を選択します。 失敗した要求トレース ファイルを初めて開く場合は、Internet Explorer のセキュリティ強化構成が既定で有効になっているため、信頼済みサイトの一覧に about: internet を追加する必要があります。 その場合は、次のように表示されます。

    Internet Explorer のセキュリティ強化構成を示すダイアログ ボックスのスクリーンショット。「about:」のインターネット アクセスがブロックされています。

  5. [Internet Explorer] ダイアログ ボックスで[追加...] を選択して、信頼済みサイトの一覧に about:internet を追加します。 これで XSL が機能するようになります。 信頼済みサイトの一覧に about:internet を追加すると、次の内容が表示されます。

    Internet Explorer を示すスクリーンショット。[要求の概要] タブが選択され、2 つの警告が表示されます。

    失敗した要求の概要が冒頭に記録され、エラーと警告テーブルによって重大度を基に警告エラー、または重大なエラーのイベントが判別されます。 この例では、 警告 の重大度レベルは ISAPI の制限によるものです。 イメージを読み込もうとしましたが、%windir%\system32\inetsrv\asp.dllでした。

  6. テキスト エディターを使用して生の XML ファイルを直接開き、各イベントの内容を確認します。

まとめ

2 つのタスクを完了しました。失敗した要求トレースを構成して、IIS が 404.2 状態コードで返す要求のトレースをキャプチャし、IIS が要求のトレースをキャプチャしたことを確認しました。 また、要求に 404.2 リターン コードがないため、 freb.xml ログ ファイルに、行った要求に対するその他の要求が含まれていないことも確認しました。 エラーのログ ファイルを参照した結果、その要求に対して拡張機能が無効になっていることがエラーの原因であると判明しました。 他の HTML 以外のページ (.gif ファイルや.jpg ファイルなど) を試して、ログ ファイルでこれらのトレースが追加されないことに注意してください。 また、これを 404 に簡単に変更したり、failureDefinitions で timeTaken フィールドを設定して要求に 30 秒以上かかる場合にエラーをキャプチャしたりすることもできます。

バックアップを復元する

この記事の作業を完了したら、構成のバックアップを復元しましょう。 管理者権限で次のコマンドを実行します。

%windir%\system32\inetsrv\appcmd restore backup cleanInstall