Server.Transfer ( „error_404.aspx“) in Application_Error gibt eine leere Seite
-
22-09-2019 - |
Frage
Ich suche HttpExceptions im Application_Error Unter meinem 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
Ich kann diesen Code ein und bestätigen Schritt durch den Server.Transfer getroffen hat ( „error_404.aspx“), sowie die Page_Load von error_404.aspx, aber alles, es zeigt eine leere Seite.
Lösung
Löschen Sie den Antwortpuffer? Sie haben keine Ahnung, was schon da ist, da Sie dies in der Application_Error catch-all tun. Server.Transfer anhängt nur, was die neue Seite auf die vorhandene Reaktion erzeugt. Natürlich könnte dies einige Probleme schaffen.
Andere Tipps
Funktioniert es, wenn Sie die Server.Transfer
zu einem Response.Redirect
ändern? (Sie können verwenden, haben die HttpContext.Current Präfix aus, wo Sie sind in global.asax.)
Ich bin nicht sicher, dass ein Server.Transfer ist eine gute Idee, im Rahmen dessen, was Sie tun, da Sie effektiv IIS fragen die global.asax URL an den Browser zu machen.
Ich denke, wenn ein Fehler auftritt, Server.Transfer wird nicht ausgelöst.
Server.Transfer ist keine gute Methode dafür. Versuchen Sie, mit Response.Redirect . Es sollte funktionieren.
Wenn Sie eine Ausnahme haben, ist es eine Anforderung, die die Zustände für die Aufrechterhaltung? Wenn nicht, geht mit Response.Redirect
.