次の方法で共有


HTTP エラーの追加: <error>

概要

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

互換性

バージョン メモ
IIS 10.0 <error> 要素は、IIS 10.0 では変更されませんでした。
IIS 8.5 <error> 要素は、IIS 8.5 では変更されませんでした。
IIS 8.0 <error> 要素、は IIS 8.0 では変更されませんでした。
IIS 7.5 <error> 要素は、IIS 7.5 では変更されませんでした。
IIS 7.0 <httpErrors> コレクションの <error> 要素は IIS 7.0 で導入されました。
IIS 6.0 <httpErrors> コレクションは、IIS 6.0 の IIsWebService メタベース オブジェクトの HttpErrors セクションを置き換えます。

段取り

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

操作方法

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

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

    • Windows Server 2012 または Windows Server 2012 R2 を使用している場合:

      • タスク バーで、[サーバー マネージャー] をクリックし、[ツール][インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
    • Windows 8 または Windows 8.1 を使用している場合:

      • Windows キーを押しながら文字 X を押し、[コントロール パネル] をクリックします。
      • [管理ツール] をクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
    • Windows Server 2008 または Windows Server 2008 R2 を使用している場合:

      • タスク バーで、[スタート] ボタンをクリックし、[管理ツール][インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
    • Windows Vista または Windows 7 を使用している場合:

      • タスク バーで、[スタート][コントロール パネル] の順にクリックします。
      • [管理ツール] をダブルクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
  2. [接続] ウィンドウで、サーバー名を展開して [サイト] を展開し、カスタム エラー ページを構成する Web サイトまたはアプリケーションに移動します。

  3. [ホーム] ウィンドウで、[エラー ページ] をダブルクリックします。
    [エラー ページ] オプションが強調表示されている [ホーム] ウィンドウのスクリーンショット。

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

  5. [カスタム エラー ページの追加] ダイアログ ボックスの [状態コード] で、カスタム エラー メッセージを作成する HTTP 状態コードの番号を入力します。
    [状態コード] フィールドを示す [カスタム エラー ページの追加] ダイアログ ボックスのスクリーンショット。

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

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

    Note

    [このサイトで URL を実行する] を選ぶ場合、パスは相対パスである必要があります。 [302 リダイレクトで応答する] を選ぶ場合、URL は絶対 URL である必要があります。

    Note

    次の HTTP エラーはカスタマイズできません: 400、403.9、411、414、500、500.11、500.14、500.15、501、503、505。

構成

属性

属性 説明
path 必須の文字列属性です。

statusCodesubStatusCode 属性で指定された HTTP エラーへの応答で提供されるファイル パスまたは URL を指定します。 ファイル応答モードを選ぶ場合は、カスタム エラー ページのパスを指定します。 ExecuteURL 応答モードを選ぶ場合は、パスはサーバーの相対 URL (/404.htm など) である必要があります。 Redirect 応答モードを選ぶ場合は、絶対 URL (www.contoso.com/404.htm など) を入力する必要があります。
prefixLanguageFilePath 省略可能な文字列属性。

カスタム エラーのパスを生成するときの最初のパス セグメントを指定します。 このセグメントは、カスタム エラー パスの言語固有の部分の前に表示されます。 たとえば、パス C:\Inetpub\Custerr\en-us\404.htm では、C:\Inetpub\Custerr が prefixLanguageFilePath です。
responseMode 省略可能な列挙型属性。

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

responseMode 属性には、次のいずれかの値を指定できます。 既定値は、File です。
Value 説明
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.config ファイルに含まれていると、errorMode 属性を使って、詳細なエラー メッセージだけがローカル コンピューターに表示されるようにします。 また、defaultResponseMode 属性を使って、サイトまたはアプリケーションの応答モードを設定します。 その後、サンプルは 500 状態コードの継承されたエラー メッセージを削除します。 次に、prefixLanguageFilePath 属性を、IIS が新しいカスタム エラー ページを検索する必要があるディレクトリに設定し、path 属性を、カスタム エラー メッセージを含むファイル 500.htm に設定します。

<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 (IIS は "URL シーケンス拒否" エラーを返します) であるすべてのエラーに対する新しいファイルを追加します。 これらの例では、プレフィックス パスは "%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

Note

AppCmd.exe を使用してこれらの設定を構成するときは、commit パラメーターを必ず apphost に設定する必要があります。 これで、ApplicationHost.config ファイルの適切な場所セクションに構成設定がコミットされます。

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()