2011-10-04 1 views
5

Ciao Sto cercando di eseguire un reindirizzamento se la risposta è un 404 ma non funziona come previsto, è possibile che gli esperti vedano il problema ?. Si va ancora al generico 404404 Reindirizzamento personalizzato

nel mio 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

provato finora

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

Forse cercavi di mettere 'Response.Redirect (NOTFOUND);'? – Icarus

+0

cos'è PageNotFound ?? –

+0

ahh scusa errore nel postare ma ho ancora il problema. Grazie – user710502

risposta

8

È inoltre possibile utilizzare il web.config customErrors sezione - as shown here

ad es. Nella sezione system.web,

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

si potrebbe aggiungere al vostro web.config per fare questo reindirizzamento, non è necessario utilizzare Application_BeginRequest per gestire questa situazione.

Vedere questo ServerFault question.

Se non è possibile utilizzare il file web.config, impostare la pagina di avvio su una che non esiste, inserire un punto di interruzione nel BeginRequest, eseguire il debug dell'applicazione e osservare la richiesta per vedere come determinarla è un 404. Sarebbe molto più facile determinare la soluzione ottimale.

Guardando in questo un po 'di più, c'è un HttpStatusCode che viene utilizzato nella classe HttpWebResponse. Quindi può essere sensato utilizzare un diverso override dell'applicazione per ottenere la risposta predefinita e quindi controllarne lo stato rispetto all'Enum.

+0

In ogni caso, per qualche motivo lo vogliono fare nell'asax, quale sarebbe il modo di farlo lì? – user710502

3

Non penso che BeginRequest possa conoscere gli errori 404. Prova invece a implementare Application_Error. Verifica se Server.GetLastError() è un HttpException e, in caso affermativo, controlla lo stato.

0

È inoltre possibile utilizzare il 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>