1

HandleUnauthorizedRequest의 재정의 된 AuthorizeAttribute 사용자 정의를 작성했습니다. 전체 응답이 때문이다HandleUnauthorizedRequest 내에서 기본 404 페이지를 출력하는 방법

var response = filterContext.HttpContext.Response; 
response.StatusCode = 404; 
response.ContentType = null; 
response.End(); 

문제 :이 오버라이드 (override)는, 조건부로 (404)에 대한 응답 상태 코드를 설정

HTTP/1.1 404 Not Found 
Server: ASP.NET Development Server/10.0.0.0 
Date: Mon, 24 Jan 2011 16:43:08 GMT 
X-AspNet-Version: 4.0.30319 
X-AspNetMvc-Version: 2.0 
Cache-Control: private 
Connection: Close 
  

내가 기본 404 페이지를 다시 보내려고

. 뭔가 같은 :


Screenshot of the default ASP.NET 404 page


내가 어떻게해야합니까?

+1

참고 - HandleUnauthorizedRequest를 재정의 할 때는 실제로 filterContext.Result = {something}을 설정해야합니다. Response.End()는 실제로 MVC 파이프 라인에서 요청을 중지 할 수 없으며 실제로 액션 메서드가 실제로 실행됩니다. – Levi

답변

0

: "NOTFOUND은"이었다 다른 조치를 포함하는 컨트롤러의 동작을입니다

var response = filterContext.HttpContext.Response; 
response.StatusCode = 404; 
var viewData = new ViewDataDictionary(); 
viewData["Id"] = filterContext.HttpContext.Request.RequestContext.RouteData.Values["id"]; 
filterContext.Result = new ViewResult { ViewName = "NotFound", ViewData = viewData }; 
return; 

내 사용자 정의 AuthorizeAttribute으로 표시됩니다.

0

에 대해 무엇 : 다음의 Web.config에서 사용자 지정 404 처리기를 만듭니다

<customErrors mode="On"> 
<error statusCode="404" redirect="My404ErrorPage.aspx" /> 
</customErrors> 

지금 모든 404 오류가 My404ErrorPage.aspx로 이동 (또는 하여 오류 페이지의 이름을 무엇을 선택)하고 의지 할 수도 있습니다.

이 같은 필터 컨텍스트의 Result 속성을 설정한다하고 결국 무엇 어쩌면 "Response.WriteError(404);

+0

불행히도'

관련 문제