Global.asax Session_Start() Endlosschleife
In mein Global.asax-Datei habe ich folgenden code, der sich mit mit unbehandelten Ausnahmen:
void Application_Error(object sender, EventArgs e)
{
Application["Exception"] = Server.GetLastError();
Response.Redirect("ErrorPage.aspx");
}
(ErrorPage.aspx ruft die exception-details von der Anwendung und befasst sich mit ihm.)
Immer noch im Globalen.asax, habe ich den folgenden code ausführen, um zu überprüfen, alle Arten von Benutzer-bezogene Dinge:
void Session_Start(object sender, EventArgs e)
{
... //All sorts of user-related stuff
}
In der Regel den Fehler umleiten und die user-related-stuff-Arbeit völlig in Ordnung.
Jedoch, wenn immer ein Fehler geworfen wird, während Session_Start
, die Seite umgeleitet wird, und Session_Start aufgerufen wird, alle wieder!
Diese Ergebnisse in einer endlos-Schleife.
Aus, was ich gefunden habe hier und hier, dies geschieht, weil der eine Art von session-cookies Problem, das macht der browser und/oder server denke, dass die session neu gestartet wird bei jeder Weiterleitung.
Weiß jemand, um eine Lösung für das cookie Problem?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde gehen mit Sie ein flag in der
Session_Start
sagen "nicht umleiten, wenn Fehler passiert", so wie hier:Dann in der Fehlerbehandlung, überprüfen Sie, dass die Flagge und verwenden
Server.Execute
statt:Dies wird noch auszuführen, die Seite hinter den kulissen (Protokollierung der Fehler, etc), aber sollte das nicht auslösen, die Sitzung erneut zu Starten.
halten, die Logik im
Session_Start
so einfach wie möglich und legen Sie einen try-catch-also alle Ausnahmen dort behandelt werden. Die Protokollierung verwenden, um zu protokollieren, was geschieht in diesem catch-block in Fall-Kontroll-Fluss wird in den catch - (auch sollten Sie melden Sie Ausnahmen ohnehin nur in einem einzigen catch-block für Ihre Anwendung... 🙂 ), aber nicht wieder werfen nichts ausSession_Start
.