Server.Transfer ( “error_404.aspx”) in Application_Error restituisce una pagina vuota
-
22-09-2019 - |
Domanda
cerco HttpExceptions nella sub Application_Error della mia global.asx
Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
Dim ex As Exception = HttpContext.Current.Server.GetLastError()
If ex IsNot Nothing Then
If TypeOf (ex) Is HttpUnhandledException Then
If ex.InnerException Is Nothing Then
Server.Transfer("error.aspx", False)
End If
ex = ex.InnerException
End If
If TypeOf (ex) Is HttpException Then
Dim httpCode As Integer = CType(ex, HttpException).GetHttpCode()
If httpCode = 404 Then
Server.ClearError()
Server.Transfer("error_404.aspx", False)
End If
End If
End If
End Sub
posso passo attraverso questo codice e confermo lo fa ha colpito il Server.Transfer ( "error_404.aspx"), così come il Page Load di error_404.aspx, ma tutto ciò che mostra è una pagina vuota.
Soluzione
Stai cancellare la memoria di risposta? Tu non hai idea di cosa è già lì, dal momento che si sta facendo questo nel Application_Error catch-all. Server.Transfer appena aggiunge qualunque sia la nuova pagina genera sulla risposta esistente. Ovviamente questo potrebbe creare qualche problema.
Altri suggerimenti
Funziona se si cambia la Server.Transfer
ad un Response.Redirect
? (Potrebbe essere necessario utilizzare il prefisso HttpContext.Current da dove ci si trova in Global.asax.)
Non sono sicuro che un Server.Transfer è una buona idea nel contesto di quello che stai facendo, dal momento che si sta effettivamente chiedendo IIS per rendere l'URL global.asax al browser.
Credo che se si verifica un errore, server.Transfer non scatta mai.
server.Transfer non è un buon metodo per questo. Prova con Response.Redirect . Dovrebbe funzionare.
Se avete qualche eccezione v'è alcuna necessità di mantenere gli stati? In caso contrario, andare con Response.Redirect
.