다음을 통해 공유


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>IIsWebService 메타베이스 개체의 IIS 6.0 HttpErrors 섹션을 대체합니다.

설치 프로그램

<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 실행 또는 302 리디렉션으로 응답 중 하나를 사용하는 경우 정적 파일의 콘텐츠 삽입 또는 사용자 지정 오류 페이지의 URL을 선택한 경우 파일 경로 텍스트 상자에 사용자 지정 오류 페이지의 경로를 입력한 다음 확인을 클릭합니다.

    참고

    이 사이트에서 URL 실행을 선택하는 경우 경로는 상대 경로여야 합니다. 302 리디렉션으로 응답을 선택하는 경우 URL은 절대 URL이어야 합니다.

    참고

    400, 403.9, 411, 414, 500, 500.11, 500.14, 500.15, 501, 503 및 505 HTTP 오류를 사용자 지정할 수 없습니다.

구성

특성

attribute Description
path 필수 문자열 특성입니다.

statusCodesubStatusCode 특성으로 지정된 HTTP 오류에 대한 응답으로 제공되는 파일 경로 또는 URL을 지정합니다. 파일 응답 모드를 선택하는 경우 사용자 지정 오류 페이지의 경로를 지정합니다. ExecuteURL 응답 모드를 선택하는 경우 경로는 서버 상대 URL(예: /404.htm)이어야 합니다. 리디렉션 응답 모드를 선택하는 경우 절대 URL(예www.contoso.com/404.htm: )을 입력해야 합니다.
prefixLanguageFilePath 선택적 문자열 특성입니다.

사용자 지정 오류에 대한 경로를 생성할 때 초기 경로 세그먼트를 지정합니다. 이 세그먼트는 사용자 지정 오류 경로의 언어별 부분 앞에 나타납니다. 예를 들어 C:\Inetpub\Custerr\en-us\404.htm 경로에서 C:\Inetpub\Custerr는 prefixLanguageFilePath입니다.
responseMode 선택적 열거형 특성입니다.

사용자 지정 오류 콘텐츠가 반환되는 방법을 지정합니다.

responseMode 특성은 다음과 같은 가능한 값 중 하나일 수 있습니다. 기본값은 File입니다.
Description
File 정적 콘텐츠(예: 사용자 지정 오류에 대한 .html 파일)를 제공합니다.

responseModeFile로 설정된 경우 경로 특성 값은 파일 경로여야 합니다.

숫자 값은 입니다 0.
ExecuteURL 사용자 지정 오류에 대한 경로 특성에 지정된 동적 콘텐츠(예: .asp 파일)를 제공합니다.

responseModeExecuteURL로 설정된 경우 경로 값은 서버 상대 URL이어야 합니다.

숫자 값은 입니다 1.
Redirect 클라이언트 브라우저를 사용자 지정 오류 파일이 포함된 경로 특성에 지정된 URL로 리디렉션합니다.

responseMode리디렉션으로 설정된 경우 경로 값은 절대 URL이어야 합니다.

숫자 값은 입니다 2.
statusCode 필수 uint 특성입니다.

사용자 지정 오류 메시지를 만들 HTTP 상태 코드의 수를 지정합니다. 허용되는 값은 400에서 999까지의 범위에 있습니다.
subStatusCode 선택적 int 특성입니다.

사용자 지정 오류 메시지를 만들 HTTP 하위 상태 코드의 수를 지정합니다. 허용되는 값은 -1에서 999까지의 범위에 있습니다.

기본값은 -1입니다.

자식 요소

없음

구성 샘플

웹 사이트 또는 애플리케이션에 대한 Web.config 파일에 포함된 다음 구성 예제에서는 errorMode 특성을 사용하여 자세한 오류 메시지만 로컬 컴퓨터에 표시할 수 있도록 합니다. 또한 defaultResponseMode 특성을 사용하여 사이트 또는 애플리케이션에 대한 응답 모드를 설정합니다. 그런 다음 샘플은 500 상태 코드에 대한 상속된 오류 메시지를 제거합니다. 다음으로 prefixLanguageFilePath 특성을 IIS가 새 사용자 지정 오류 페이지를 검색해야 하는 디렉터리로 설정하고 경로 특성을 사용자 지정 오류 메시지가 포함된 파일인 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>

샘플 코드

다음 예제에서는 하위 통계가 5인 모든 상태 코드 404 오류에 대한 새 파일을 추가합니다. 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

참고

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