HTTP エラーの追加 <error>
- 概要
- 互換性
- セットアップ
- 方法
- 構成
- サンプル コード
※本ページに挿入されている画像をクリックすると、画像全体が別ウィンドウで表示されます。
概要
<httpErrors>
コレクションの <error>
要素は、固有のエラー マッピングを HTTP エラー コレクションに追加します。
互換性
IIS 7.0 | IIS 6.0 | |
---|---|---|
注意 | <httpErrors> コレクションの <error> は IIS 7.0 で新たに導入された要素です。 |
|
セットアップ
<httpErrors>
コレクションの <error>
要素は、IIS 7.0 の既定のインストールに含まれています。
方法
カスタム エラー ページを追加する方法
タスク バーで [スタート] ボタンをクリックし、[管理ツール] をポイントして [インターネット インフォメーション サービス (IIS) マネージャー] をクリックします。
[接続] ウィンドウで当該サーバー名を展開して [サイト] を展開し、カスタム エラー ページを構成する Web サイトまたは Web アプリケーションを選択します。
[ホーム] ウィンドウで [エラー ページ] をダブルクリックします。
[操作] ウィンドウで [追加] をクリックします。
[カスタム エラー ページの追加] ダイアログ ボックスの [状態コード] の下に、カスタム エラー メッセージを作成する HTTP 状態コードの番号を入力します。
[応答動作] セクションで、次のいずれかを実行します。
- カスタム エラーに .html ファイルなどの静的コンテンツを提供する場合は、[静的ファイルのコンテンツをエラー応答に挿入] を選択します。
- カスタム エラーに .asp ファイルなどの動的コンテンツを提供する場合は、[このサイトで URL を実行] を選択します。
- カスタム エラー ファイルを含む別の URL にクライアント ブラウザーをリダイレクトする場合は、[302 リダイレクトによる応答] を選択します。
[ファイル パス] テキスト ボックスで、[静的ファイルのコンテンツをエラー応答に挿入] を選択した場合はカスタム エラー ページのパスを入力し、[このサイトで 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 説明:
値: ExecuteURL 説明:
値: Redirect 説明:
|
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()