2011-04-29 4 views
8

IIS7 (통합 모드)에서 오류 렌더링에 대한 완전한 프로그래밍 방식 제어를 시도하는 데 어려움을 겪고 있습니다. 내가하고 싶은 일은 오류 (페이지를 찾을 수 없거나, 내부 서버 오류, 인증되지 않음 등)가 주어지고, 요청을 전체 HTTP 상태 코드와 함께 사용자 지정 ASPX 또는 HTML (선호하는 경우)로 전송합니다.IIS7 및 HTTP 상태 코드 처리

내가 원하는 것은 IIS7이 HTTP 상태 코드를 설정하는 것에 대해 허황하지 않는다는 것입니다. 오류 처리를 원하지 않습니다. Response.StatusCode = (int)HttpStatusCode.NotFound을 설정하면 IIS가 자체 오류 페이지를 렌더링하지 않지만 요청을 다른 파일로 전송할 수 있습니다.

나는 일이 정적 구성 물건을 입수 한이 작동하는 동안

<configuration> 
    <system.webServer> 
    <httpErrors> 
     <clear /> 
     <error statusCode="404" path="/errors/404.html" responseMode="ExecuteURL" /> 
    </httpErrors> 
    </system.webServer> 
</configuration> 

, 그것은 나에게 오류 시나리오 주어진 응답과 함께 무엇을해야하는지 프로그램 적 제어를 제공하지 않습니다. 구성은 좋은 대안이지만, 실제로는 을 설정하고 404.html과 완전히 다른 것을 렌더링하고 싶습니다 (예 : Accept: application/json을받는 경우 JSON 응답). 그러나 IIS7은 허용하지 않습니다. 기회가 아닙니다.

그럼 도대체 내가 무엇을해야할까요? HttpResponse.TrySkipIisCustomErrors Property을 설정하려고 시도했지만 거대한 해킹처럼 보이고 일관되게 작동하지 않는 것 같습니다. 내가 원하는 동작을 얻으려면이 속성을 true로 설정하는 것이 실제로 권장되는 최상의 방법입니까?

현재 IIS7에 대한 격렬한 증오는 내가 떠난 느낌입니다. 누구나 내가 바보가되고 실제로 HTTP 스택을 완전히 제어 할 수 있음을 증명함으로써이 문제를 해결할 수 있습니까?

+0

당신이 봤어 설정해야합니까? – sanpaco

답변