2011-10-04 16 views
5

Witam Próbuję wykonać przekierowanie, jeśli odpowiedź jest 404, ale nie działa zgodnie z oczekiwaniami, czy eksperci mogą zobaczyć problem ?. To wciąż idzie do rodzajowego 404404 Niestandardowe przekierowanie

w moim Global.asax

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

} 

UPDATE

próbowałem dotąd

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

Czy chodziło Ci umieścić 'response.redirect (NOTFOUND);'? – Icarus

+0

co to jest PageNotFound? –

+0

ahh przepraszam literówka podczas wysyłania, ale nadal mam problem. Dziękuję – user710502

Odpowiedz

8

Można również użyć web.config CustomErrors sekcja - as shown here

np. W sekcji system.Web,

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

Można dodać do pliku web.config, aby to zrobić przekierowanie, nie trzeba używać Application_BeginRequest sobie z tym poradzić.

Zobacz ten ServerFault question.

Jeśli nie możesz użyć web.config to ustawiłbym twoją stronę startową na taką, która nie istnieje, umieść punkt przerwania w BeginRequest, debuguj aplikację i spójrz na żądanie, aby zobaczyć, jak to ustalić to 404. O wiele łatwiej byłoby określić optymalne rozwiązanie.

Patrząc na to więcej, istnieje HttpStatusCode, który jest używany w klasie HttpWebResponse. Dlatego może być użyteczne inne zastąpienie Aplikacji, aby uzyskać domyślną odpowiedź, a następnie sprawdzić jej status względem Enum.

+0

W każdym razie, z jakiegoś powodu, chcą, żeby to było zrobione w asaxie, gdzie byłby to sposób? – user710502

3

Nie sądzę, że BeginRequest może wiedzieć o błędach 404. Spróbuj zamiast tego użyć Application_Error. Sprawdź, czy Server.GetLastError() jest wyjątkiem HttpException, a jeśli tak, sprawdź status.

0

Można również użyć web.config

<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> 
Powiązane problemy