エラー定義 <failureDefinitions>

  • 概要
  • 互換性
  • セットアップ
  • 方法
  • 構成
  • サンプル コード

※本ページに挿入されている画像をクリックすると、画像全体が別ウィンドウで表示されます。

概要

<httpProtocol> 要素の <customHeaders> 要素は、インターネット インフォメーション サービス (IIS) 7.0 で Web サーバーから HTTP 応答内で返されるカスタム HTTP ヘッダーを指定します。

: HTTP ヘッダーは、Web サーバーからの応答で返された名前と値のペアです。カスタム応答ヘッダーは、既定の HTTP ヘッダーと共にクライアントに送信されます。リダイレクトが発生した場合にのみ応答で返されるリダイレクト応答ヘッダーと異なり、カスタム応答ヘッダーはどの応答においても必ず返されます。

<failureDefinitions> 要素は、要求のトレースを行う状態を定義します。エラー状態には、状態コード、時間間隔、またはその両方の組み合わせが含まれます。また、トレースの詳細レベルも指定できます。

: 詳細オプションをさらに追加することにより、トレース ログ内により多くの情報を返すように IIS を構成できますが、詳細なログが巨大になる可能性があります。ログ ファイルのサイズが <traceFailedRequestsLogging> 要素の maxLogFileSizeKB 属性で定義されたファイルの最大サイズを超えた場合、そのログ ファイルは最大サイズで切り捨てられるため、この属性で指定されたファイル サイズを増やす必要が生じます。

互換性

  IIS 7.0 IIS 6.0
注意 <failureDefinitions> は IIS 7.0 で新たに導入された要素です。

なし

セットアップ

IIS 7.0 の既定のインストールが終了したら、失敗した要求トレースを使用するために、トレースの役割サービスをインストールする必要があります。また、当該役割サービスをインストールした後には、失敗した要求トレースをサイト レベル、アプリケーション レベル、またはディレクトリ レベルで有効にする必要があります。

Windows Server 2008

  1. タスク バーで [スタート] ボタンをクリックし、[管理ツール] をポイントして [サーバー マネージャー] をクリックします。

  2. [サーバー マネージャー] ウィンドウのツリー表示で、[役割] を展開して [Web サーバー (IIS)] をクリックします。

  3. [Web サーバー (IIS)] ウィンドウで、[役割サービス] セクションまでスクロールして [役割サービスの追加] をクリックします。

  4. 役割サービスの追加ウィザードの [役割サービスの選択] ページで、[追跡] を選択して、[次へ] をクリックします。

    拡大

  5. [インストール オプションの確認] ページで [インストール] をクリックします。

  6. [結果] ページで [閉じる] をクリックします。

Windows Vista

  1. タスク バーで [スタート] ボタンをクリックし、[コントロール パネル] をクリックします。

  2. コントロール パネルで、[プログラムと機能][Windows の機能の有効化または無効化] の順にクリックします。

  3. [Internet Information Services][World Wide Web サービス][健常性と診断] の順に展開します。

  4. [追跡] を選択して、[OK] をクリックします。

    拡大

方法

トレースを有効にする方法

  1. タスク バーで [スタート] ボタンをクリックし、[管理ツール] をポイントして [インターネット インフォメーション サービス (IIS) マネージャー] をクリックします。

  2. [接続] ウィンドウで、失敗した要求トレースを構成するサーバー接続、サイト、アプリケーション、またはディレクトリを選択します。

  3. [操作] ウィンドウで [失敗した要求トレース] をクリックします。

    拡大

  4. [Web サイトの失敗した要求トレース設定の編集] ダイアログ ボックスで、[有効にする] チェック ボックスをオンにしてトレースを有効にします。[ディレクトリ] ボックスは、既定値のままにするか、失敗した要求ログ ファイルを保存する新しいディレクトリを入力します。[トレース ファイルの最大数] ボックスには、失敗した要求のトレース ファイルを保存する数を入力して、[OK] をクリックします。

    拡大

エラー定義の構成方法

  1. タスク バーで [スタート] ボタンをクリックし、[管理ツール] をポイントして [インターネット インフォメーション サービス (IIS) マネージャー] をクリックします。

  2. [接続] ウィンドウで、失敗した要求トレースを構成する接続、サイト、アプリケーション、またはディレクトリに移動します。

  3. [ホーム] ウィンドウで [失敗した要求トレースの規則] をダブルクリックします。

    拡大

  4. [操作] ウィンドウで [追加] をクリックします。

  5. 失敗した要求トレース規則の追加ウィザードの [トレースするコンテンツの指定] ページで、トレースするコンテンツの種類を選択し、[次へ] をクリックします。

    拡大

  6. [トレース条件の定義] ページで、トレースする条件を選択して、[次へ] をクリックします。トレース条件は、状態コード、要求に応じる制限時間、またはイベントの重大度をどのように組み合わせてもかまいません。すべての条件を指定すると、適合した最初の条件によって、失敗した要求のトレース ログ ファイルが生成されます。

    拡大

  7. [トレース プロバイダーの選択] ページで、[プロバイダー] の下のトレース プロバイダーを 1 つ以上選択します。

    拡大

  8. [トレース プロバイダーの選択] ページで、[詳細] の下の詳細レベルを 1 つ以上選択します。

    拡大

  9. 手順 8 で [ASPNET] または [WWW Server] トレース プロバイダーを選択した場合は、[トレース プロバイダーの選択] ページの [領域] の下で、当該プロバイダーがトレースする機能領域を 1 つ以上選択します。

  10. [完了] をクリックします。

構成

属性

属性 説明
statusCodes オプションの string 属性。

トレースする状態コードを指定します。このリストには、各コードをコンマで区切って、状態コードを複数入力できます。また、副状態コード ("404.2, 500" など) または副状態コードの範囲 ("400-599" など) を使用して、状態コードを絞り込むこともできます。副状態コードを指定しないと、指定された状態コードに対するすべての副状態コードがトレースされます。状態コードは 100 から 999、副状態コードは 1 から 999 となります。
timeTaken オプションの timeSpan 属性。

ある要求の処理に費やすことができる最長時間を指定します。この時間を過ぎると、要求は失敗したとマークされ、トレースされるようになります。

既定値は 00:00:00 です。
verbosity オプションの enum 属性。

トレース ログに記録する情報の最小量と情報の種類を指定します。verbosity 属性を Error に設定すると、verbosity が Error または CriticalError に設定されたトレース イベントを最初に受信したときに、その要求に対する失敗した要求のトレース ログ ファイルが作成されます。

verbosity 属性には、次のいずれかの値を指定できます。

既定値は Ignore です。

--------------------------------------------------------------------------------------------------

値: Ignore

説明:

  • 要求アクティビティに関する情報を提供しません。
  • 数値は 0 です。

値:CriticalError

説明:

  • プロセスの終了を引き起こす可能性のあるアクション、またはプロセスの終了を引き起こそうとしているアクションに関する情報を提供します。
  • 数値は 1 です。

値: Error

説明:

  • エラーが発生し、要求の処理を継続できないコンポーネントに関する情報を提供します。通常、このエラーはサーバー側の問題を示します。
  • 数値は 2 です。

値: Warning

説明:

  • エラーが発生したが、要求の処理は継続できるコンポーネントに関する情報を提供します。
  • 数値は 3 です。

子要素

なし。

構成サンプル

次の構成サンプルでは、サーバー レベルのトレースを ApplicationHost.config ファイルで構成しています。すべての .aspx ファイルに対するトレースを設定し、<traceAreas> 要素を使用して ASPNET プロバイダーを設定して、ASP.NET のすべての領域 (Infrastructure、Module、Page、および AppServices) をトレースします。また、verbosity 属性を使用して、トレース ファイルに返される情報量を warning に設定しています。最後に、<failureDefinitions> 要素を使用して、HTTP 404 状態コードを生成する要求のみをトレースするように定義しています。

<tracing>
   <traceFailedRequests>
      <add path="*.aspx">
         <traceAreas>
            <add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Warning" />
         </traceAreas>

         <failureDefinitions statusCodes="404" />
      </add>
   </traceFailedRequests>
</tracing>

サンプル コード

次の例では、*.aspx ページに対するすべての要求で、ASP.NET コンテンツ内の HTTP 500 エラーに対して、詳細な失敗した要求トレースが有効化されます。

AppCmd.exe

appcmd.exe set config "Contoso" -section:system.webServer/tracing/traceFailedRequests /+"[path='*.aspx']" 

appcmd.exe set config "Contoso" -section:system.webServer/tracing/traceFailedRequests /+"[path='*.aspx'].traceAreas.[provider='ASPNET',areas='Infrastructure,Module,Page,AppServices',verbosity='Verbose']" 

appcmd.exe set config "Contoso" -section:system.webServer/tracing/traceFailedRequests /[path='*.aspx'].failureDefinitions.statusCodes:"500" 

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetWebConfiguration("Contoso");
         ConfigurationSection traceFailedRequestsSection = config.GetSection("system.webServer/tracing/traceFailedRequests");
         ConfigurationElementCollection traceFailedRequestsCollection = traceFailedRequestsSection.GetCollection();

         ConfigurationElement addElement = traceFailedRequestsCollection.CreateElement("add");
         addElement["path"] = @"*.aspx";

         ConfigurationElementCollection traceAreasCollection = addElement.GetCollection("traceAreas");
         ConfigurationElement addElement1 = traceAreasCollection.CreateElement("add");
         addElement1["provider"] = @"ASPNET";
         addElement1["areas"] = @"Infrastructure,Module,Page,AppServices";
         addElement1["verbosity"] = @"Verbose";
         traceAreasCollection.Add(addElement1);

         ConfigurationElement failureDefinitionsElement = addElement.GetChildElement("failureDefinitions");
         failureDefinitionsElement["statusCodes"] = @"500";
         traceFailedRequestsCollection.Add(addElement);

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample
   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetWebConfiguration("Contoso")
      Dim traceFailedRequestsSection As ConfigurationSection = config.GetSection("system.webServer/tracing/traceFailedRequests")
      Dim traceFailedRequestsCollection As ConfigurationElementCollection = traceFailedRequestsSection.GetCollection

      Dim addElement As ConfigurationElement = traceFailedRequestsCollection.CreateElement("add")
      addElement("path") = "*.aspx"
      Dim traceAreasCollection As ConfigurationElementCollection = addElement.GetCollection("traceAreas")
      Dim addElement1 As ConfigurationElement = traceAreasCollection.CreateElement("add")
      addElement1("provider") = "ASPNET"
      addElement1("areas") = "Infrastructure,Module,Page,AppServices"
      addElement1("verbosity") = "Verbose"
      traceAreasCollection.Add(addElement1)

      Dim failureDefinitionsElement As ConfigurationElement = addElement.GetChildElement("failureDefinitions")
      failureDefinitionsElement("statusCodes") = "500"
      traceFailedRequestsCollection.Add(addElement)

      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Contoso";
var traceFailedRequestsSection = adminManager.GetAdminSection("system.webServer/tracing/traceFailedRequests", "MACHINE/WEBROOT/APPHOST/Contoso");
var traceFailedRequestsCollection = traceFailedRequestsSection.Collection;

var addElement = traceFailedRequestsCollection.CreateNewElement("add");
addElement.Properties.Item("path").Value = "*.aspx";
var traceAreasCollection = addElement.ChildElements.Item("traceAreas").Collection;

var addElement1 = traceAreasCollection.CreateNewElement("add");
addElement1.Properties.Item("provider").Value = "ASPNET";
addElement1.Properties.Item("areas").Value = "Infrastructure,Module,Page,AppServices";
addElement1.Properties.Item("verbosity").Value = "Verbose";
traceAreasCollection.AddElement(addElement1);

var failureDefinitionsElement = addElement.ChildElements.Item("failureDefinitions");
failureDefinitionsElement.Properties.Item("statusCodes").Value = "500";
traceFailedRequestsCollection.AddElement(addElement);

adminManager.CommitChanges();

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Contoso"
Set traceFailedRequestsSection = adminManager.GetAdminSection("system.webServer/tracing/traceFailedRequests", "MACHINE/WEBROOT/APPHOST/Contoso")
Set traceFailedRequestsCollection = traceFailedRequestsSection.Collection

Set addElement = traceFailedRequestsCollection.CreateNewElement("add")
addElement.Properties.Item("path").Value = "*.aspx"
Set traceAreasCollection = addElement.ChildElements.Item("traceAreas").Collection

Set addElement1 = traceAreasCollection.CreateNewElement("add")
addElement1.Properties.Item("provider").Value = "ASPNET"
addElement1.Properties.Item("areas").Value = "Infrastructure,Module,Page,AppServices"
addElement1.Properties.Item("verbosity").Value = "Verbose"
traceAreasCollection.AddElement addElement1

Set failureDefinitionsElement = addElement.ChildElements.Item("failureDefinitions")
failureDefinitionsElement.Properties.Item("statusCodes").Value = "500"
traceFailedRequestsCollection.AddElement addElement

adminManager.CommitChanges()