HTTP エラーの追加 <error>

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

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

概要

<httpErrors> コレクションの <error> 要素は、固有のエラー マッピングを HTTP エラー コレクションに追加します。

互換性

  IIS 7.0 IIS 6.0
注意 <httpErrors> コレクションの <error> は IIS 7.0 で新たに導入された要素です。

<httpErrors> コレクションは、IIS 6.0 の IIsWebService メタベース オブジェクトの HttpErrors セクションに代わるものです。

セットアップ

<httpErrors> コレクションの <error> 要素は、IIS 7.0 の既定のインストールに含まれています。

方法

カスタム エラー ページを追加する方法

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

  2. [接続] ウィンドウで当該サーバー名を展開して [サイト] を展開し、カスタム エラー ページを構成する Web サイトまたは Web アプリケーションを選択します。

  3. [ホーム] ウィンドウで [エラー ページ] をダブルクリックします。

    拡大

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

  5. [カスタム エラー ページの追加] ダイアログ ボックスの [状態コード] の下に、カスタム エラー メッセージを作成する HTTP 状態コードの番号を入力します。

    拡大

  6. [応答動作] セクションで、次のいずれかを実行します。

    • カスタム エラーに .html ファイルなどの静的コンテンツを提供する場合は、[静的ファイルのコンテンツをエラー応答に挿入] を選択します。
    • カスタム エラーに .asp ファイルなどの動的コンテンツを提供する場合は、[このサイトで URL を実行] を選択します。
    • カスタム エラー ファイルを含む別の URL にクライアント ブラウザーをリダイレクトする場合は、[302 リダイレクトによる応答] を選択します。
  7. [ファイル パス] テキスト ボックスで、[静的ファイルのコンテンツをエラー応答に挿入] を選択した場合はカスタム エラー ページのパスを入力し、[このサイトで URL を実行] または [302 リダイレクトによる応答] を使用する場合はカスタム エラー ページの URL を入力し、[OK] をクリックします。

    注意     [このサイトで URL を実行] を選択した場合、パスには相対パスを指定する必要があります。[302 リダイレクトによる応答] を選択した場合、URL には絶対 URL を指定する必要があります。

構成

属性

属性 説明
path 必須の string 属性。

statusCode 属性と subStatusCode 属性で指定される HTTP エラーに対して提供されるファイル パスまたは URL を指定します。File 応答モードを使用する場合は、カスタム エラー ページのパスを指定します。ExecuteURL 応答モードを使用する場合は、パスにはサーバーの相対 URL (/404.htm など) を指定する必要があります。Redirect 応答モードを使用する場合は、絶対 URL (www.contoso.com/404.htm など) を入力する必要があります。
prefixLanguageFilePath オプションの string 属性。

カスタム エラーのパスを生成するときに、初期パス セグメントを指定します。このセグメントは、カスタム エラー パスの言語固有部分の前に表示されます。たとえば、C:\Inetpub\Custerr\en-us\404.htm というパスの場合、C:\Inetpub\Custerr が prefixLanguageFilePath です。
responseMode オプションの enum 属性。

カスタム エラーのコンテンツが返される方法を指定します。

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

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

値: File

説明:

  • カスタム エラーに .html ファイルなどの静的コンテンツを提供します。
  • responseModeFile に設定されている場合、path 属性の値にはファイル パスを指定する必要があります。
  • 数値は 0 です。

値: ExecuteURL

説明:

  • カスタム エラーに、path 属性で指定された動的コンテンツ (.asp ファイルなど) を提供します。
  • responseModeExecuteURL に設定されている場合、path の値にはサーバーの相対 URL を指定する必要があります。
  • 数値は 1 です。

値: Redirect

説明:

  • カスタム エラー ファイルを含む、path 属性で指定された URL にクライアント ブラウザーをリダイレクトします。
  • responseModeRedirect に設定されている場合、path の値には絶対 URL を指定する必要があります。
  • 数値は 2 です。
statusCode 必須の uint 属性。

カスタム エラー メッセージを作成する HTTP 状態コードの番号を指定します。許容できる値は、400 から 999 の範囲内の値です。
subStatusCode オプションの int 属性。

カスタム エラー メッセージを作成する HTTP 副状態コードの番号を指定します。許容できる値は、-1 から 999 の範囲内の値です。

既定値は -1 です。

子要素

なし。

構成サンプル

次の構成例が Web サイトまたは Web アプリケーションの Web.config ファイルに組み込まれると、errorMode 属性を使用して、詳細なエラー メッセージがローカル コンピューターのみに表示されるようになります。また、defaultResponseMode 属性を使用して、サイトまたはアプリケーションの応答モードが設定されます。次に、状態コード 500 の継承エラー メッセージが削除されます。さらに、IIS で新しいカスタム エラー ページが検索されるディレクトリが prefixLanguageFilePath 属性に指定され、カスタム エラー メッセージを含む 500.htm ファイルが path 属性に指定されます。

<configuration>
   <system.webServer>
      <httpErrors errorMode="DetailedLocalOnly" defaultResponseMode="File" >
         <remove statusCode="500" />
         <error statusCode="500"
            prefixLanguageFilePath="C:\Contoso\Content\errors"
            path="500.htm" />
       </httpErrors>

   </system.webServer>
</configuration>

サンプル コード

次の例では、状態コードが 404 で副状態コードが 5 のすべてのエラーに対して新しいファイルが追加されます。これは、"URL シーケンスが拒否されました" として IIS で返されるエラーです。この例では、プレフィックス パスが "%SystemDrive%\inetpub\custerr" に設定され、ファイル名が "404.5.htm" に指定されます。

AppCmd.exe

appcmd.exe set config -section:system.webServer/httpErrors /+"[statusCode='404',subStatusCode='5',prefixLanguageFilePath='%SystemDrive%\inetpub\custerr',path='404.5.htm']" /commit:apphost

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.GetApplicationHostConfiguration();
         ConfigurationSection httpErrorsSection = config.GetSection("system.webServer/httpErrors");
         ConfigurationElementCollection httpErrorsCollection = httpErrorsSection.GetCollection();

         ConfigurationElement errorElement = httpErrorsCollection.CreateElement("error");
         errorElement["statusCode"] = 404;
         errorElement["subStatusCode"] = 5;
         errorElement["prefixLanguageFilePath"] = @"%SystemDrive%\inetpub\custerr";
         errorElement["path"] = @"404.5.htm";
         httpErrorsCollection.Add(errorElement);

         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.GetApplicationHostConfiguration
      Dim httpErrorsSection As ConfigurationSection = config.GetSection("system.webServer/httpErrors")
      Dim httpErrorsCollection As ConfigurationElementCollection = httpErrorsSection.GetCollection

      Dim errorElement As ConfigurationElement = httpErrorsCollection.CreateElement("error")
      errorElement("statusCode") = 404
      errorElement("subStatusCode") = 5
      errorElement("prefixLanguageFilePath") = "%SystemDrive%\inetpub\custerr"
      errorElement("path") = "404.5.htm"
      httpErrorsCollection.Add(errorElement)

      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var httpErrorsSection = adminManager.GetAdminSection("system.webServer/httpErrors", "MACHINE/WEBROOT/APPHOST");
var httpErrorsCollection = httpErrorsSection.Collection;

var errorElement = httpErrorsCollection.CreateNewElement("error");
errorElement.Properties.Item("statusCode").Value = 404;
errorElement.Properties.Item("subStatusCode").Value = 5;
errorElement.Properties.Item("prefixLanguageFilePath").Value = "%SystemDrive%\\inetpub\\custerr";
errorElement.Properties.Item("path").Value = "404.5.htm";
httpErrorsCollection.AddElement(errorElement);

adminManager.CommitChanges();

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set httpErrorsSection = adminManager.GetAdminSection("system.webServer/httpErrors", "MACHINE/WEBROOT/APPHOST")
Set httpErrorsCollection = httpErrorsSection.Collection

Set errorElement = httpErrorsCollection.CreateNewElement("error")
errorElement.Properties.Item("statusCode").Value = 404
errorElement.Properties.Item("subStatusCode").Value = 5
errorElement.Properties.Item("prefixLanguageFilePath").Value = "%SystemDrive%\inetpub\custerr"
errorElement.Properties.Item("path").Value = "404.5.htm"
httpErrorsCollection.AddElement errorElement

adminManager.CommitChanges()