2008-11-05 7 views
16

Ho un sito in cui utilizzo CustomErrors in web.config per specificare una pagina di errore personalizzata e funziona correttamente. La pagina 404 personalizzata è anche specificata nella configurazione di IIS (perché se non lo è, non ottengo la mia pagina 404 personalizzata).ASP.NET aspxerrorpath nell'URL

Ma ho una logica che interviene se un utente ottiene un 404 che guarda all'URL richiesto e fa un suggerimento di navigazione, se appropriato. Questa logica si basa sul valore aspxerrorpath. Sul mio PC di sviluppo, l'aspxerrorpath è correttamente aggiunto all'URL, in questo modo: http://localhost:3092/FileNotFound.aspx?aspxerrorpath=/badpage.aspx, ma sul mio sito di test, non c'è l'aspxerrorpath aggiunto all'URL, quindi tutta la mia logica personalizzata è aggirata e i miei suggerimenti non lavoro. Non sono sicuro se si tratta di un problema di configurazione di IIS o qualcos'altro. Il server Web è Windows Server 2008 con IIS 7.

Qualche idea?

Molte grazie.

+0

Sul server, viene reindirizzato a FileNotFound.aspx o l'URL rimane lo stesso quando si verifica l'errore? Esiste un valore per defaultRedirect in web.config? Se rimuovi i valori in quell'elemento, il comportamento cambia? –

+0

Grazie Giovanni. Ulteriori informazioni: Sul server, l'URL rimane lo stesso (non va a FileNotFound.aspx). Non c'è alcun valore DefaultRedirect nel web.config. – theog

risposta

18

Il parametro aspxerrorpath viene passato se l'errore è stato rilevato da .NET (e viene utilizzata la pagina di errore specificata in web.config). Ciò accade se si utilizza il server Web di sviluppo o se IIS è configurato per non verificare che il file esista.

Se IIS controlla che il file esiste, allora viene utilizzato l'errore personalizzato configurato in IIS e l'URL richiesto viene incluso nella querystring come qualcosa di simile

http://example.com/FileNotFound.aspx?404;http://example.com/badpage.aspx

6

Potrebbe essere necessario aggiungere il seguito al web.config

<customErrors mode="On"> 
    <error statusCode="404" redirect="~/error404.aspx" /> 
</customErrors> 

per ulteriori informazioni consulta: http://geekswithblogs.net/shahed/archive/2007/10/23/116278.aspx

Aggiornamento: Possiamo utilizzare la funzionalità IIS7 per visualizzare pagine di errore 404 personalizzate utilizzando HTTPModules come descritto in http://professionalaspnet.com/archive/2008/02/13/Enforcing-a-Custom-404-Page-in-ASP.NET.aspx

+0

Grazie Ramesh. Ho questo set nel web.config. – theog

+0

@theog: per favore fatemi sapere quale pagina non esistente si sta cercando di accedere nella macchina di test. È associato al processo di lavoro di aspnet? Inoltre, dai un'occhiata al 404 HttpModule descritto in http://professionalaspnet.com/archive/2008/02/13/Enforcing-a-Custom-404-Page-in-ASP.NET.aspx – Ramesh