답변:
면책 조항 : 이것은 내 경험에 의한 것이며 입증 된 사실은 아닙니다.
둘 다 웹 사이트의 오류 처리를 정의하는 데 사용되지만 소프트웨어마다 다른 구성 요소를 나타냅니다.
customErrors
Visual Studio Development Server (일명 VSDS 또는 Cassini)에서 사용하는 레거시 (뒤로 호환 가능) 요소입니다.
httpErrors
IIS7에서만 사용되는 새로운 요소입니다.
이는 로컬 IIS 대신 VSDS를 사용하는 동안 ASP.NET 웹 사이트를 개발할 때 발생할 수있는 문제를 강조합니다 .
또한 오류 출력을 완전히 제어하려면 IIS7에서 오류 메시지를 처리하는 방법 에 대해이 게시물을 직접 참조하십시오 .
VSDS
사용 -customErrors
IIS6
사용할 사이트 공개customErrors
IIS7
사용할 사이트 공개 httpErrors
.와 함께 개발 VSDS
하지만에 게시하면 IIS7
둘 다 필요하다고 생각합니다.
* 2016 년 4 월 업데이트
customErrors 속성은 .net 코드가 예외 (404, 403, 500 등)를 발생시킬 때 사용되며 httpErrors 속성은 IIS 자체가 예외를 발생시킬 때 사용됩니다.
이것을 올바르게 구성하려는 함정이 많이 있습니다. 따라서 빠른 예를 찾고 있다면 가장 좋은 두 가지 옵션이 있습니다.
예 1 : html 페이지 사용
<system.web>
<customErrors mode="RemoteOnly" defaultRedirect="/Error500.html" redirectMode="ResponseRewrite">
<error statusCode="403" redirect="/Error403.html" />
<error statusCode="404" redirect="/Error404.html" />
<error statusCode="500" redirect="/Error500.html" />
</customErrors>
</system.web>
<system.webServer>
<httpErrors errorMode="DetailedLocalOnly" existingResponse="Auto">
<remove statusCode="403" />
<remove statusCode="404" />
<remove statusCode="500" />
<error statusCode="403" responseMode="File" path="Error403.html" />
<error statusCode="404" responseMode="File" path="Error404.html" />
<error statusCode="500" responseMode="File" path="Error500.html" />
</httpErrors>
</system.webServer>
예 2 : aspx 페이지 사용
<system.web>
<customErrors mode="RemoteOnly" defaultRedirect="/Error500.html" redirectMode="ResponseRewrite">
<error statusCode="403" redirect="/Error403.aspx" />
<error statusCode="404" redirect="/Error404.aspx" />
<error statusCode="500" redirect="/Error500.aspx" />
</customErrors>
</system.web>
<system.webServer>
<httpErrors errorMode="DetailedLocalOnly" existingResponse="Auto">
<remove statusCode="403" />
<remove statusCode="404" />
<remove statusCode="500" />
<error statusCode="403" responseMode="ExecuteURL" path="Error403.aspx" />
<error statusCode="404" responseMode="ExecuteURL" path="Error404.aspx" />
<error statusCode="500" responseMode="ExecuteURL" path="Error500.aspx" />
</httpErrors>
</system.webServer>
그리고 aspx 오류 페이지에서 다음과 같은 작업을 수행해야합니다 (예 : 404 페이지).
<%
Response.StatusCode = 404;
Response.TrySkipIisCustomErrors = true;
%>
참고 : customErrors 섹션에서 더 적은 URL을 사용하는 것은 불가능합니다! . (해킹없이)
해결 방법 중 하나는 사용자 정의 오류를 비활성화하고 http 오류가 사용자 정의 페이지를 처리하도록하는 것입니다. 친구가 그러한 설정을 만들었습니다. 시간을 찾으면 코드를 공유합니다.
배경
좋은 맞춤 오류 페이지는 다음과 같습니다.
우리 설정에서 몇 가지 옵션을 명확히하기 위해 :
<customErrors mode="RemoteOnly"
. 당신은 여기에 지정할 수 있습니다 On
, Off
, RemoteOnly
.
On
= 항상 사용자 정의 오류 페이지 표시Off
= 항상 실제 오류 표시RemoteOnly
= 오류를 로컬로 표시하지만 사용자 정의 오류 페이지를 원격으로 표시합니다. 그래서 우리 RemoteOnly
는 진술 1 을 원합니다<customErrors redirectMode="ResponseRewrite"
. 여기에서 지정할 수 있습니다 : ResponseRedirect
또는 ResponseRewrite
. ResponseRedirect
모드는 사용자 지정 오류 페이지에 오류 페이지를 리디렉션합니다. 링크 크롤러 (SEO)의 경우 302-> 500이 발생하지만 링크 크롤러에서 500 오류가 발생합니다.
<httpErrors errorMode="DetailedLocalOnly"
. 이것은 customErrors
모드 와 같습니다 . 옵션 당신이 가지고 : Custom
, Detailed
, DetailedLocalOnly
.
나에게 많은 도움이 된 좋은 블로그 게시물은 다음과 같습니다. http://benfoster.io/blog/aspnet-mvc-custom-error-pages
<customErrors>
대 <httpErrors>
<customErrors>
<httpErrors>
참고 : 더 이상 사용할 필요가 없습니다
customErrors
인용 출처 : ASP.NET의 사용자 지정 404 및 오류 페이지 (우수 기사)
ExecuteURL
.aspx 페이지와 같은 동적 콘텐츠를 제공합니다 ( path
값은 서버 상대 URL 이어야 함 ).
<system.webServer>
<httpErrors errorMode="Custom" existingResponse="Auto" defaultResponseMode="ExecuteURL" >
<remove statusCode="404"/>
<error statusCode="404" responseMode="ExecuteURL" path="/error.aspx" />
</httpErrors>
</system.webServer>
File
.html 페이지와 같은 사용자 정의 오류 파일을 제공합니다.
<system.webServer>
<httpErrors errorMode="Custom" existingResponse="Auto" defaultResponseMode="File" >
<remove statusCode="404"/>
<error statusCode="404" path="404.html" />
</httpErrors>
</system.webServer>
참조 : HTTP 오류 (www.iis.net)
자세한 내용은 위의 www.iis.net 링크를 참조하십시오
it's no loger necesary to use customErrors
및 인용 +1 , 이것은 실제로 다음에 온 정보입니다 :-)
웹 구성의 오류 섹션은 사용자 정의 http 오류 처리 방법을 제공하기위한 것으로, system.web 섹션에있는 customErrors 섹션과 system.webServer 섹션에있는 다른 httpErrors 섹션이 있습니다 (아래 참조).
customErrors : 이 섹션은 IIS 7, IIS 6 5가 도입되기 전과 http 상태 코드에 따라 사용자 지정 http 오류를 처리하기 위해이 섹션을 완전히 사용하기 전에 사용되었습니다.
httpErrors : IIS 7 이상은 이 섹션과 customErrors 섹션을 사용하여 index.aspx와 같은 ISAPI dll (.aspx, ashx, .asmx, .svc 등)에 요청한 페이지 확장명을 등록한 경우 파일 확장명을 기반으로 사용자 정의 http 오류를 처리합니다. customeErrors 섹션 에서 IIS 픽업 설정 그렇지 않은 경우 httpErrors 에서 설정 픽업 (IIS 7 호스트 모드는 클래식이 아닌 통합 된 분위기로 설정해야 함)
다음은 404 오류 처리 확인 링크에 대한 예입니다.