[asp-classic] 자세한 500 오류 메시지, ASP + IIS 7.5

IIS 7.5, 2008rc2, 클래식 ASP, 500 오류 메시지 :

내부 서버 오류가 발생하여 페이지를 표시 할 수 없습니다.

좀 더 자세한 오류를 얻으려면 IIS를 구성하는 방법을 알아야합니다.
ASP 구성의 모든 디버깅 옵션을 true로 설정하려고했습니다.
그러나 그것은 효과가 없었습니다. 누구든지 나를 도울 수 있습니까?



답변

나는 같은 문제에 직면했고 Alex K와 같은 방식으로 고쳤다 .

“브라우저에 오류 보내기”가 작동하지 않으면 다음과 같이 설정하십시오.

오류 페이지-> 500-> 기능 설정 편집-> “상세한 오류”

여기에 이미지 설명을 입력하십시오

또한 전송 된 오류 페이지의 내용이 매우 짧고 IE를 사용하는 경우 IE는 서버에서 전송 된 유용한 내용을 무시하고 대신 일반적인 오류 페이지를 표시합니다. IE의 옵션에서 이것을 끄거나 다른 브라우저를 사용할 수 있습니다.


답변

원격 서버에있는 경우 다음과 같이 web.config 파일을 구성 할 수 있습니다.

<configuration>
<system.webServer>
    <httpErrors errorMode="Detailed" />
    <asp scriptErrorSentToBrowser="true"/>
</system.webServer>
<system.web>
    <customErrors mode="Off"/>
    <compilation debug="true"/>
</system.web>


답변

IIS 관리자의 사이트 홈 화면에서 “ASP”를 두 번 클릭하고 “디버깅 속성”을 펼친 후 “오류를 브라우저로 보내기”를 활성화 한 다음 “적용”을 클릭하십시오.

홈 화면의 “오류 페이지”에서 “500”을 선택한 다음 “기능 설정 편집”을 선택하고 “상세 오류”를 선택하십시오.

IIS 8.0 (Windows Server 2012)에도 동일한 단계가 적용됩니다.


답변

시도 후 VaclavAlex의 대답을 후에도 IE에서 “Show friendly HTTP error messages”를 비활성화해야했습니다.

여기에 이미지 설명을 입력하십시오


답변

에서 의 Web.config 에서

<system.webServer>

줄을 바꾸거나 추가하십시오

<httpErrors errorMode="Detailed"></httpErrors>

<httpErrors existingResponse="PassThrough" errorMode="Detailed"></httpErrors>

IIS7은 기본적으로 응용 프로그램에서 생성 된 4xx 및 5xx와 같은 HTTP 상태 코드를 파이프 라인 위로 가로 채기 때문입니다.

그런 다음 “ASP”섹션에서 ” 브라우저로 오류 보내기 “를 활성화 하고 ” 오류 페이지 / 기능 설정 편집 “에서 “상세 오류”를 선택하십시오.

또한 웹 사이트 폴더에 대한 쓰기 권한IIS_IUSRS 기본 제공 그룹에 부여하십시오.


답변

TLDR : 먼저 파이프 라인에서 오류가 발생하는 위치를 확인하고 (오류와 유사한 화면의 스크린 샷을 스크롤하여 스크롤) 새로운 것을 가져 오기 위해 변경을 반복하십시오.

먼저 실제로 어떤 오류 메시지가 표시되는지 확인하십시오.

여기에있는 파일이 보이면 …

% SystemDrive % \ inetpub \ custerr \\ 500.htm

… 일반적으로 다음과 같습니다.

IIS 기본 500 오류

… ** IIS에 현재 구성된 오류 페이지가 표시됩니다 ** ASP.net customErrors 설정, ASP 오류 세부 사항 설정 또는 “친숙한 HTTP 오류”브라우저 설정을 변경할 필요가 없습니다.

누군가 스크린 샷을 변경 한 경우를 대비하여 스크린 샷을 신뢰하는 대신 위의 참조 경로를보고 싶을 수도 있습니다.

“예, 위에서 설명한 오류가 보입니다 …”

이 경우 < httpErrors > 또는 IIS 관리자에서 오류 페이지 -> 기능 설정 편집 설정이 표시됩니다. 이에 대한 기본값은 서버 노드 수준 (사이트 수준이 아닌) 에서 errorMode = DetailedLocalOnly 입니다. 즉, 원격 상태에서이 구성된 오류 페이지가 표시되지만 서버에 로컬로 로그온하여 전체를 볼 수 있어야합니다. 다음과 같은 오류가 발생합니다.

자세한 HTTP 오류

현재 오류를 수정하기 위해 해당 시점에 필요한 모든 것이 있어야합니다.

“하지만 서버를 탐색해도 자세한 오류가 표시되지 않습니다”

그것은 몇 가지 가능성을 남깁니다.

  1. 서버에서 사용중인 브라우저는 연결 설정에서 프록시를 사용하도록 구성되어 있으므로 “로컬”로 표시되지 않습니다.
  2. 실제로 탐색하려는 사이트를 탐색하지는 않습니다. 일반적으로로드 밸런서가 관련된 경우에 발생합니다. ping 확인을 수행하여 dns가 서버 또는 다른 곳에서 IP를 제공하는지 확인하십시오.
  3. 귀하는 사이트의 httpErrors 설정이 “사용자 정의”로만 설정되어 있습니다. “DetailedLocalOnly”로 변경하십시오. 그러나 구성 오류가있는 경우 사이트 레벨 httpErrors도 구성 항목이므로 작동하지 않을 수 있습니다. 이 경우 # 4로 진행하십시오.
  4. 모든 사이트에 대한 httpErrors 의 기본값은 “Custom”으로 설정되어 있습니다. 이 경우 특정 사이트가 아닌 IIS 관리자에서 최상위 서버 노드를 클릭하고 httpErrors를 변경해야합니다. 설정을 DetailedLocalOnly로 . 이 서버가 내부 서버이고 민감한 정보를 공개 할까 걱정하지 않으면 “상세 정보”로 설정하여 서버 이외의 클라이언트에서 발생한 오류를 볼 수도 있습니다.
  5. UrlRewrite와 같은 서버에 모듈이 없습니다 (이 모듈은 나에게 많은 물림을 주며 httpErrors 설정에 관계없이 일반적인 메시지를 제공합니다).

“서버 로그온은 옵션이 아닙니다”

원격으로 볼 수 있도록 사이트의 httpErrors 를 “Detailed”로 변경하십시오 . 그러나 작동하지 않으면 오류가 이미 구성 오류 일 수 있습니다. 위의 # 3을 참조하십시오. 따라서 # 4 또는 # 5에 갇혀있을 수 있으며 서버 팀원이 필요합니다.

“위에서 설명한 오류 페이지가 표시되지 않습니다. 다른 내용이 표시됩니다.”

이걸 보면 …

여기에 이미지 설명을 입력하십시오

… 그리고 당신은 이와 같은 것을 보게 될 것입니다 …

여기에 이미지 설명을 입력하십시오

… 그런 다음 IIS 관리자의 사이트-> IIS-> ASP-> 디버깅 속성에서 “오류를 브라우저로 보내기”를 true로 변경해야합니다.

이걸 보면 …

즉 친절한 오류 1

아니면 이거…

즉, 친숙한 오류 2

… 브라우저에서 친숙한 오류를 비활성화하거나 피들러의 웹뷰를 사용하여 실제 응답 과 브라우저가 표시하도록 선택한 것을 확인해야합니다.

이걸 보면 …

맞춤 오류 사용

… 사용자 정의 오류는 작동하지만 사용자 정의 오류 페이지가 없습니다 (물론이 시점에서 클래식 ASP가 아닌 .net에 대해 이야기했습니다). 서버에서 보려면 web.config의 customErrors 태그를 RemoteOnly로 변경하거나 원격으로 보려면 Off로 변경해야합니다.

사이트와 같은 스타일의 것이 있으면 사용자 정의 오류가 On 또는 RemoteOnly 일 가능성이 있으며 사용자 정의 페이지가 표시됩니다 (예 : MVC의 Views-> Shared-> Error.cshtml). 즉, 누군가가 IIS에서 httpErrors에 대한 페이지를 변경했을 가능성은 거의 없으므로 첫 번째 섹션을 참조하십시오.


답변

“existingResponse”httpErrors 속성 값을 “PassThrough”로 설정하십시오. YSOD가 표시되지 않는 “바꾸기”로 광산을 설정했습니다.

<httpErrors errorMode="Detailed" existingResponse="PassThrough">