2010-12-29 3 views
6

Ho un gestore di errore personalizzato nel metodo Application_Error del global.asax, quando si verifica un errore io uso il seguente codice per trasferire utente alla pagina di errore:server.Transfer in Global.asax

Server.Transfer("/Error/"); 

Tuttavia, senza specificando il nome effettivo della pagina il codice sopra si rompe con l'eccezione "Errore nell'esecuzione della richiesta figlio per/Errore/".

Quindi, se utilizzo Server.Transfer("/Error/Default.aspx"), funziona senza problemi.

Anche l'utilizzo di Response.Redirect("/Error/") funziona anche bene, tuttavia vogliamo continuare a utilizzare Server.Transfer per conservare l'URL visualizzato nella barra degli indirizzi quando viene visualizzata la pagina di errore in modo che gli utenti possano semplicemente aggiornare la pagina per riprovare ad accedere all'URL originale.

Sarebbe grato se qualcuno potesse commentare come ottenere il metodo Server.Transfer senza specificare il nome effettivo della pagina di aspx.

Molte grazie.

+0

Il server.Transfer senza una pagina specifica funziona su una pagina normale? Se il server.Transfer nasconde il nome della pagina, perché è incluso nel trasferimento un problema? – Doobi

+0

So cosa intendi, includere veramente il nome della pagina nel codice non influirà sul modo in cui gli utenti lo vedono, stavo solo cercando di cercare un po 'di perfezione dato che tutti i nostri percorsi sono dichiarati come costanti e pensiamo che Server.Transfer potrebbe seguire la convenzione qui. Credo che dovrò fare un'eccezione per questa istanza e includere il percorso completo. Grazie. – Maya

risposta

13

Server.Transfer richiede il percorso virtuale effettivo di una risorsa che fornirà l'output necessario. Non passa attraverso IIS per scoprire quali sono i documenti predefiniti del sito Web, quindi non ha idea di cosa intendi per "/ Error /" a meno che non si tratti di un vero nome di file.

Response.Redirect funziona perché questo invia un risultato "spostato" al browser con quell'URL relativo (/ Errore /) e quando il browser effettua la nuova richiesta di/Errore /, IIS lo gestisce per primo e applica il documento predefinito impostazioni.

+0

Questo ha senso, grazie mille. – Maya