2011-10-04 5 views
5

응답이 404이지만 예상대로 작동하지 않는 경우 리디렉션을 시도하고 있습니다. 전문가가 문제를 볼 수 있습니까? 아직 UPDATE404 사용자 지정 리디렉션

protected void Application_BeginRequest(Object sender, EventArgs e) 
{ 
     if (Response.Status == "404 Not Found") 
     { 
      string notFound = "~/custom_notfound.aspx"; 
      Response.Redirect(notFound); 
     } 

} 

내에서 Global.asax에서 일반 (404)

로 이동

지금까지 시도

(Response.Status == "404 Not Found") 
(Response.Status == "404") 
(Response.StatusCode == 404) 
+0

당신이'Response.Redirect를 (NOTFOUND)를 넣어하셨습니까의 Web.config를 사용할 수'? – Icarus

+0

PageNotFound 무엇입니까 ?? –

+0

게시 할 때 미안하지만 오타가 남아 있습니다. 고마워요 – user710502

답변

8

당신은 또한 Web.config의를 사용할 수있는 섹션 customErrors에 - as shown here

예 : system.web 섹션에서

<customErrors mode="On" defaultRedirect="/custom_error.aspx"> 
    <error statusCode="404" redirect="/custom_notfound.aspx" /> 
</customErrors> 
2

당신이 리디렉션을 수행하는 당신의 Web.config에 추가 할 수 있습니다, 당신은이 문제를 처리하기 위해 Application_BeginRequest를 사용할 필요가 없습니다.

이 부분은 ServerFault question입니다.

web.config를 사용할 수없는 경우 시작 페이지를 존재하지 않는 페이지로 설정하고 BeginRequest에 중단 점을 넣은 다음 앱을 디버그하고 요청을 확인하여 결정하는 방법을 확인하십시오 404입니다. 최적의 솔루션을 결정하는 것이 훨씬 쉬울 것입니다.

이 부분을 더 살펴보면 HttpWebResponse 클래스에서 사용되는 HttpStatusCode이 있습니다. 따라서 응용 프로그램의 다른 재정의를 사용하여 기본 응답을 얻은 다음 Enum에 대해 상태를 확인하는 것이 좋습니다.

+0

어쨌든, 그들은 무엇인가의 이유로 그들이 그것을 거기에서하는 길일 것 인 asax에서하게되고 싶어한다? – user710502

3

BeginRequest가 404 오류를 알 수 있다고 생각하지 않습니다. 대신 Application_Error를 구현하십시오. Server.GetLastError()가 HttpException인지 확인하고, 그렇다면 상태를 확인하십시오.

0

또한

<system.webServer> 
    <httpErrors errorMode="Custom" defaultResponseMode="File" > 
    <remove statusCode="404" /> 
    <remove statusCode="500" /> 
    <error statusCode="404" path="404.html" /> 
    <error statusCode="500" path="500.html" /> 
    </httpErrors> 
</system.webServer> 
관련 문제