Ошибка добавления ошибок <HTTP>
Общие сведения
Элемент <error>
коллекции добавляет уникальное <httpErrors>
сопоставление ошибок в коллекцию ошибок 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 | Элемент <error> коллекции появился <httpErrors> в IIS 7.0. |
IIS 6,0 | Коллекция <httpErrors> заменяет раздел Iis 6.0 HttpErrors объекта метабазы IIsWebService . |
Настройка
Элемент <error>
<httpErrors>
коллекции включен в установку 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.
В области Подключения разверните узел Имя сервера, Узлы, а затем перейдите к веб-сайту или приложению, для которого требуется настроить пользовательские страницы ошибок.
На панели Главная дважды щелкните Страницы ошибок.
В области Действия нажмите кнопку Добавить...
В диалоговом окне Добавление настраиваемой страницы ошибок в разделе Код состояния введите номер кода состояния HTTP, для которого требуется создать пользовательское сообщение об ошибке.
В разделе Действие ответа выполните одно из следующих действий.
- Выберите Вставить содержимое из статического файла в ответ об ошибке , чтобы обслуживать статическое содержимое, например файл .html, для пользовательской ошибки.
- Выберите Выполнить URL-адрес на этом сайте , чтобы обслуживать динамическое содержимое, например ASP-файл для пользовательской ошибки.
- Выберите Ответить с перенаправлением 302 , чтобы перенаправить клиентские браузеры на другой URL-адрес, содержащий пользовательский файл ошибок.
В текстовом поле Путь к файлу введите путь к настраиваемой странице ошибок, если выбран параметр Вставка содержимого из статического файла в ответ об ошибке , или URL-адрес настраиваемой страницы ошибки, если используется параметр Выполнить URL-адрес на этом сайте или Ответить с перенаправлением 302, а затем нажмите кнопку ОК.
Примечание
При выборе параметра Выполнить URL-адрес на этом сайте путь должен быть относительным. Если выбран параметр Ответить с перенаправлением 302, URL-адрес должен быть абсолютным.
Примечание
Невозможно настроить следующие ошибки HTTP: 400, 403.9, 411, 414, 500, 500.11, 500.14, 500.15, 501, 503 и 505.
Параметр Configuration
Атрибуты
Атрибут | Описание | ||||||||
---|---|---|---|---|---|---|---|---|---|
path |
Обязательный строковый атрибут. Указывает путь к файлу или URL-адрес, предоставляемый в ответ на ошибку HTTP, указанную атрибутами statusCode и subStatusCode . Если выбран режим ответа "Файл", укажите путь к настраиваемой странице ошибок. При выборе режима ответа ExecuteURL путь должен быть относительным URL-адресом сервера (например, /404.htm). Если выбран режим ответа перенаправления , необходимо ввести абсолютный URL-адрес (например, www.contoso.com/404.htm ). |
||||||||
prefixLanguageFilePath |
Необязательный строковый атрибут. Указывает начальный сегмент пути при создании пути для пользовательской ошибки. Этот сегмент отображается перед частью пользовательского пути к ошибке для конкретного языка. Например, в C:\Inetpub\Custerr\en-us\404.htm пути C:\Inetpub\Custerr — это префиксLanguageFilePath. |
||||||||
responseMode |
Необязательный атрибут перечисления. Указывает, как возвращается содержимое пользовательской ошибки. Атрибут responseMode может иметь одно из следующих возможных значений. Значение по умолчанию — File .
|
||||||||
statusCode |
Обязательный атрибут uint. Указывает номер кода состояния HTTP, для которого требуется создать пользовательское сообщение об ошибке. Допустимые значения находятся в диапазоне от 400 до 999. |
||||||||
subStatusCode |
Необязательный атрибут int. Указывает номер кода подсостояния HTTP, для которого требуется создать пользовательское сообщение об ошибке. Допустимые значения находятся в диапазоне от -1 до 999. Значение по умолчанию — -1 . |
Дочерние элементы
Отсутствует.
Образец конфигурации
В следующем примере конфигурации, включенном в файл 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 Sequence Denied" (Отказано в последовательности 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
Примечание
При использовании AppCmd.exe для настройки этих параметров для параметра 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()