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 の既定のインストールに含まれています。
操作方法
カスタム エラー ページを追加する方法
インターネット インフォメーション サービス (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) マネージャー] をダブルクリックします。
[接続] ウィンドウで、サーバー名を展開して [サイト] を展開し、カスタム エラー ページを構成する Web サイトまたはアプリケーションに移動します。
[ホーム] ウィンドウで、[エラー ページ] をダブルクリックします。
[操作] ウィンドウで、[追加] をクリックします。
[カスタム エラー ページの追加] ダイアログ ボックスの [状態コード] で、カスタム エラー メッセージを作成する HTTP 状態コードの番号を入力します。
[応答アクション] セクションで、次のいずれかを行います。
- カスタム エラーに静的な内容 (.html ファイルなど) を提供するには、[静的ファイルの内容をエラー応答に挿入する] を選びます。
- カスタム エラーに動的な内容 (.asp ファイルなど) を提供するには、[このサイトで URL を実行する] を選びます。
- カスタム エラー ファイルを含む別の URL にクライアント ブラウザーをリダイレクトするには、[302 リダイレクトで応答する] を選びます。
[静的ファイルの内容をエラー応答に挿入する] を選んだ場合は [ファイル パス] テキスト ボックスにカスタム エラー ページのパスを入力し、[このサイトで 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 |
必須の文字列属性です。 statusCode と subStatusCode 属性で指定された 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 です。
|
||||||||
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()