2012-09-12 4 views
0

SEO 용 ASP.Net URL 라우팅을 사용하고 잘못된 (예 :/게임/{RouteName}) 경로 이름을 실행하면 404 페이지에 전달하여 전달하려고합니다. {RouteName}이 게임의 유효한 이름인지 확인하기 위해 DB를 확인합니다. RouteName이 유효하다면 정상적으로 처리를 계속하고 싶지만 DB가 돌아오고 해당 RouteName을 찾지 못하면 정말 잘못된 URL이 입력 된 것처럼 서버가 작동하는 방식을 원합니다. 이걸 어떻게 잘 수행 할 수 있습니까?잘못된 경로가 발견되면 404 오류 페이지로 이동 하시겠습니까?

답변

0

IIS에서 약간의 혼란을 겪고 있습니다. endyourif가 제안한 것처럼 Response.StatusCode = 404에 의해 수행 된 내 코드에 404 resposne을 던져야한다고 제안했습니다. 또한 IIS 404의 404.aspx 페이지를 가리키는 오류 페이지를 구성해야했습니다.

0

로직 내부에 404 오류가 발생하여 유효하지 않다고 판단하는 것이 좋습니다.

if (!<validRouteName>) { 
    return new HttpStatusCodeResult(404, "Game not found."); 
} 
+0

HttpStatusCodeResult는 MVC 코드로 Response.StatusCode = 404라고 생각할 수있는 유일한 동등한 기능입니다.이 부분적으로 작동하지만 404가 발생하지만 기본 IIS 404와 내 사용자 지정 404에서 전달되지 않습니다. 내 맞춤 404 페이지를 처리 ​​할 수있는 방법이 있습니까? Global.asax 파일에 404 블록을 캡처하여 내 사용자 지정 404에 전달해야하는 코드 블록이 있습니다. –

+0

보호 된 void Application_Error (개체 보낸 사람, EventArgs e) { 예외 예외 = Server.GetLastError(); (HttpException 예외이다) 경우에 { 경우 (((HttpException) 제외) .GetHttpCode() == 404) { Server.ClearError를(); Server.Transfer ("~/404.aspx", false); 반환; } } } –

+1

Response.StatusCode 대신 HttpException을 throw 할 수 있습니까? 그것이 당신의 코드가 기대하는 것처럼 보입니다 - 또는 - 응답을 확인하기 위해 코드를 업데이트 할 수도 있습니다 .statuscode. – endyourif

관련 문제