2011-03-05 3 views
0

IIS 7에서 Sitefinity CMS 웹 사이트를 실행하고 있습니다. 404 상태를 반환하려고 할 때 몇 가지 이상한 결과가 나타납니다. 현상태대로IIS 7 오류 코드

www.mysitefinitywebsite.com/test.co.uk (I이 잘못된 주소 실현,하지만 누군가가 CMS로 입력)

: 나는 같은 URL로 이동하는 경우

, 내 사용자 지정 404 페이지 (/404.aspx) 페이지가 표시됩니다

<httpErrors errorMode="Custom"> 
     <remove statusCode="404" subStatusCode="-1" /> 
     <error statusCode="404" prefixLanguageFilePath="" path="/404.aspx" responseMode="ExecuteURL" /> 
    </httpErrors> 

주소 표시 줄에 URL이 동일하게 유지 : 위의 내가 IIS는 다음 코드를 사용하여 오류를 처리하는 생각 ASPX 페이지가 아닙니다 그러나 http 상태 코드 200이 리턴됩니다.

다음과 같은 URL를 입력 할 때 그러나 경우 : -

www.mysitefinitywebsite.com/test.aspx 영문 오류 처리기는 다음과 같은 설정으로 개막 : 다시

<customErrors mode="On" > 
    <error redirect="~/Sitefinity/nopermissions.aspx" statusCode="403" /> 
    <error redirect="~/404.aspx" statusCode="404" /> 
</customErrors> 

, 내 사용자 지정 404 페이지에 주소 표시 줄의 변화, 그러나 URL을 표시됩니다

www.mysitefinitywebsite.com/404.aspx?aspxerrorpath=/test.aspx

그리고 이상하게도 Firebug를 검사하면 text.aspx에 302 코드가 반환되고 /404.aspx?aspxerrorpath=/test.aspx에는 200 상태가 반환됩니다.

여기에 무슨 일이 일어나고 있는지 완전히 이해하지 못한다. IIS가 상태 코드로 전혀 응답하지 않는 것처럼 보입니다. 완전 미친 것 같아!

의도적으로 해결할 수있는 유일한 방법은 올바른 응답 코드를 프로그래밍 방식으로 반환하는 것입니다. 사전 higgsy

답변

0

에서

덕분에 당신은 <httpErrors> 요소, 동적 콘텐츠를 제공하는 executeUrl를 사용하여 사용하십시오. 해당 내용이 상태 코드 (asp.net, asp, etc 페이지)를 명시 적으로 반환하지 않으면 existingResponse 속성을 auto/replace/passthrough로 설정해야합니다.

웹 서버에 일반 오류가있을 수 있으며 클라이언트에 다른 오류 코드 또는 확장 오류 코드를 반환 할 수 있습니다. 이렇게하면 404 등 등

는 existingResponse 플래그에 대한의 httpErrors에 IIS.NET 설명서를 한 번 봐,/포함 찾을 수 없습니다 것에 대해 더 많은 정보를 반환 할 수 있습니다 API에 대한 더 의미

ASP.NET에 관해서는

http://www.iis.net/ConfigReference/system.webServer/httpErrors

, 302 오류에 리디렉션 당신이 무엇을보고 어떤 기본 동작입니다. 리디렉션 할 페이지가 응답의 상태 코드를 프로그래밍 방식으로 설정하면 404가 반환됩니다.

차이점은 취급으로 인한 것입니다. 먼저 ASP.NET 파이프를 실행하기 전에 IIS가 오류를 처리하도록 허용합니다. 두 번째로 IIS는 ASP.NET 파이프 라인으로 전달됩니다. 그것들은 두 가지 기술, 따라서 두 가지 다른 행동입니다.약간의 연구로 안심하십시오. 둘 다 똑같이 할 수 있습니다.