Programing

customErrors와 httpErrors의 차이점은 무엇입니까?

lottogame 2020. 6. 3. 08:01
반응형

customErrors와 httpErrors의 차이점은 무엇입니까?


ASP.NET MVC 응용 프로그램에서 web.config 파일의 섹션 customErrorshttpErrors섹션의 차이점은 무엇입니까 ?

각 섹션을 사용하기위한 지침은 무엇입니까?


면책 조항 : 이것은 내 경험에 의한 것이며 입증 된 사실은 아닙니다.

둘 다 웹 사이트의 오류 처리를 정의하는 데 사용되지만 소프트웨어마다 다른 구성 요소를 나타냅니다.

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 자체가 예외를 발생시킬 때 사용됩니다.

  • / myfakeextensionslessurl-> httpErrors 404
  • /myfakeaspsx.aspx-> customErrors 404
  • /myfakeimage.jpg-> httpErrors 404
  • /throw500.apx-> customErrors 500
  • / throw500-> customErrors 500

이것을 올바르게 구성하려는 함정이 많이 있습니다. 따라서 빠른 예를 찾고 있다면 가장 좋은 두 가지 옵션이 있습니다.

예 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 오류가 사용자 정의 페이지를 처리하도록하는 것입니다. 친구가 그러한 설정을 만들었습니다. 시간을 찾으면 코드를 공유합니다.

배경

좋은 맞춤 오류 페이지는 다음과 같습니다.

  1. 로컬로 문제점 페이지를 방문 할 때 실제 예외 표시
  2. 문제 페이지를 원격으로 방문하면 사용자 정의 페이지 표시
  3. 리디렉션하지 않고 오류 페이지 내용을 표시합니다 (서장 이유로 인해).
  4. 올바른 상태 코드를 표시합니다

So to clarify some options in our config:

  1. <customErrors mode="RemoteOnly". You can specify here: On, Off, RemoteOnly.

    • On = Always show custom error pages
    • Off = Always show the real error
    • RemoteOnly = Show the error locally, but show the custom error page remotely. So we want RemoteOnly for statement 1
  2. <customErrors redirectMode="ResponseRewrite". You can specify here: ResponseRedirect or ResponseRewrite. The ResponseRedirect mode will redirect the error page to the custom error page. For a link crawler (SEO), this will result in 302 -> 500, but you want the link crawler to get a 500 error.

  3. <httpErrors errorMode="DetailedLocalOnly". This the equivalent of the customErrors mode. Options that you have: Custom, Detailed, DetailedLocalOnly.

A good blog post which helped me a lot is: http://benfoster.io/blog/aspnet-mvc-custom-error-pages


<customErrors> versus <httpErrors>


<customErrors>

  • still available in IIS7+
  • specify custom error pages for requests handled by ASP.NET
  • only handles requests within the ASP.NET application
  • static files such as HTML files or directory (“friendly”) URLs are not handled

<httpErrors>

  • introduced in IIS7
  • specify custom error pages for requests handled by IIS
  • handles requests within the ASP.NET application AND/OR handles requests outside the - ASP.NET application *
  • all files and URLs are handled *

Note: it is no longer necessary to use customErrors

Quoted source: Custom 404 and error pages in ASP.NET (excellent article)


ExecuteURL serves dynamic content such as an .aspx page (the path value has to be a server relative 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 serves a custom error file, such as a .html page:

<system.webServer>
  <httpErrors errorMode="Custom" existingResponse="Auto" defaultResponseMode="File" >
    <remove statusCode="404"/>
    <error statusCode="404" path="404.html" />
  </httpErrors>
</system.webServer>

Reference: HTTP Errors (www.iis.net)

for more details, read the www.iis.net link above


Errors section in web config is for providing custom http error handling approach there are two section, one customErrors inside the section system.web and another httpErrors inside the section system.webServer (as given below)

customErrors : This section was in use before IIS 7 introduced, IIS 6 5 and before fully use this section for handling custom http errors according to http status code.

httpErrors : IIS 7 and later use this section as well as customErrors section to handle custom http errors based on their file extensions if requested page extension register with ISAPI dll (.aspx, ashx, .asmx, .svc etc) like index.aspx then IIS pick up setting from customeErrors section else it pick up setting from httpErrors (IIS 7 hosted mode must be set as integrated mood not classic)

below are the examples that is for 404 error handling check link :

httperrors vs customerrors in webconfig , iis, asp.net

참고URL : https://stackoverflow.com/questions/2480006/what-is-the-difference-between-customerrors-and-httperrors

반응형