2008-09-30 7 views
9

맞춤 404 페이지가있는 ASP.NET 2.0 웹 사이트가 있습니다. 컨텐츠가 발견되지 않으면 사이트는 aspxerrorpath =/mauro.aspx라는 쿼리 문자열을 추가 한 맞춤 404 페이지를 제공합니다. 404 페이지 자체는 내가는 구글 위젯을 추가하고 그것으로이 문제가 Google 404 및 .NET 사용자 정의 오류 페이지

protected void Page_Load(object sender, EventArgs e) 
    { 
     Response.StatusCode = 404; 
    } 

을 추가 한이 문제를 해결하려고하기 (200)의 HTTP 상태로 제공됩니다. Internet Explorer 7에는 표시해야하는 위치가 표시되지 않습니다. 내용에 추가하면 char 79 행 226이나 그 부근에 "알 수없는 오류"가 표시됩니다. 헤드 섹션에 추가하면 콘텐츠 위에 검색 창이 나타납니다. Firefox에서는 잘 작동합니다.

그래서 내 문제는 다음과 같습니다

  1. 방법 인라인을 표시 나는 위젯을해야합니까?
  2. 어떻게 오류 페이지 원래 이름과되는 파일의 경로를 404으로 렌더링해야합니까 내가 mauro.aspx를 요청할 때 내가 가진 404 페이지의 콘텐츠를하지만 있도록 요청 URL은 mauro.aspx입니까? (나는 이 begin_request Global.asax 파일에 일부 URL rewriting을해야 할 것이라고 생각하지만, 내가 바보 아무것도 할 전에이 확인하고 싶습니다.)

답변

1

내가이 일을하여 (404)를 처리 한 global.asax 파일

protected void Application_BeginRequest(object sender, EventArgs e) 
{ 
    string url = Request.RawUrl; 
    if ((url.Contains(".aspx")) && (!System.IO.File.Exists(Server.MapPath(url)))) 
    { 
     Server.Transfer("/Error/FileNotFound.aspx"); 
    } 
} 

누구나 Google 위젯을 사용하면 큰 도움이 될 것입니다.

+3

이, 당신은 성능이 중요한 체크되어있다. –

+0

정확합니다. 사전을 사용하거나 비슷한 결과를 저장할 수 있습니다. – Mauro

10

ASP.NET 3.5 SP1에는 이제 리디렉션되지 않도록 사용할 수있는 새로운 리디렉션 모드가 있습니다. 오류 페이지를 표시하지만 URL은 동일하게 유지합니다.

"URL 리디렉션에 적합합니다."web.config에서 redirectMode를 "responseRewrite"로 설정하면 맞춤 오류 페이지로 리디렉션되는 것을 피할 수 있습니다. 브라우저의 URL은 변경되지 않았습니다. " 파일이 각 요청마다 존재하거나하지 않을 경우

+0

고맙지 만 우리는이 인스턴스에서 .Net 2.0을 사용하고 있지만 마음에 .net 3.5 sp1 정보를 보관할 것입니다. – Mauro

+0

촬영 정말 죄송합니다. 게시물을 읽는 것을 끝내야 할 때까지 게시글의 2.0 부분을 잊어 버린 것 같습니다. 내 잘못이야. – mattlant

+0

문제는 없지만 향후 3.5를 사용하기 위해 인수로 사용할 수 있습니다. – Mauro