Ошибка добавления ошибок <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 по умолчанию.

Инструкции

Добавление настраиваемой страницы ошибок

  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. В области Подключения разверните узел Имя сервера, Узлы, а затем перейдите к веб-сайту или приложению, для которого требуется настроить пользовательские страницы ошибок.

  3. На панели Главная дважды щелкните Страницы ошибок.
    Снимок экрана: панель

  4. В области Действия нажмите кнопку Добавить...

  5. В диалоговом окне Добавление настраиваемой страницы ошибок в разделе Код состояния введите номер кода состояния HTTP, для которого требуется создать пользовательское сообщение об ошибке.
    Снимок экрана: диалоговое окно

  6. В разделе Действие ответа выполните одно из следующих действий.

    • Выберите Вставить содержимое из статического файла в ответ об ошибке , чтобы обслуживать статическое содержимое, например файл .html, для пользовательской ошибки.
    • Выберите Выполнить URL-адрес на этом сайте , чтобы обслуживать динамическое содержимое, например ASP-файл для пользовательской ошибки.
    • Выберите Ответить с перенаправлением 302 , чтобы перенаправить клиентские браузеры на другой URL-адрес, содержащий пользовательский файл ошибок.
  7. В текстовом поле Путь к файлу введите путь к настраиваемой странице ошибок, если выбран параметр Вставка содержимого из статического файла в ответ об ошибке , или 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.
Значение Описание
File Обслуживает статическое содержимое, например файл .html для пользовательской ошибки.

Если параметр responseMode имеет значение File, значение атрибута path должно быть путем к файлу.

Числовое значение равно 0.
ExecuteURL Обслуживает динамическое содержимое (например, ASP-файл), указанное в атрибуте path для пользовательской ошибки.

Если для параметра responseMode задано значение ExecuteURL, значением пути должен быть относительный URL-адрес сервера.

Числовое значение равно 1.
Redirect Перенаправляет клиентские браузеры на URL-адрес, указанный в атрибуте path, который содержит пользовательский файл ошибок.

Если параметр responseMode имеет значение Redirect, значение пути должно быть абсолютным URL-адресом.

Числовое значение равно 2.
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()