Benutzer mit den meisten Antworten
Wenn Timeout auf Seite noch angemeldet

Frage
-
Hi zusammen, ich habe in meinem Webserver (IIS 7 Win2008) ein Timeout nach 30 Minuten drin.
Wenn jetzt einer eine Seite aufruft (hat sich vorher angemeldet) prüfe ich mit (im Load Event) ob er noch angemeldet ist.
If User.Identity.IsAuthenticated = False Then
Response.Redirect("~/Default.aspx", False)
Exit Sub
End If
Ich habe jetzt aber trotzdem das Phänomenen wenn einer die Seite angenommen 40 Minuten aufhat, denn ist das ganze verhalten als wenn er abgemeldet ist.Er aber wenn er einen Button klickt (hier wird div. ausgeführt ) kommt er in den Code ganz normal rein (obwohl ja im Loadevent auf IsAuthenticated geprüft wird)
Ich muss doch im Code vom Buttonclick nicht nochmal prüfen, oder?
Antworten
-
Hi,
Er aber wenn er einen Button klickt (hier wird div. ausgeführt ) kommt er in den Code ganz normal rein (obwohl ja im Loadevent auf IsAuthenticated geprüft wird)
Ich muss doch im Code vom Buttonclick nicht nochmal prüfen, oder?das liegt (sehr wahrscheinlich) an deinem zweiten Parameter "False" beim Redirect. Schreib dort mal True rein, dann wird der Request beendet.
Das, was hier passiert ist folgendes:
- Request kommt rein
- Page_Load wird aufgerufen
- Du rufst Response.Redirect auf
- Der Client erhält in diesem Moment eine entsprechende Rückgabe für die Umleitung
- Der restliche Code für den gesamten Request wird ausgeführt
Und genau das letzte ist das, was Du nun siehst.Mit Response.Redirect( "~/Default.aspx", True ) passiert das letztgenannte nicht, der Request bzw. Thread wird beim Redirect hart beendet. (Führt aber bspw. auch dazu, dass ggfs. noch offene Objekte existieren, bspw. Datenbankverbindungen, ...)
Achte auch darauf, dass bei True eine ThreadAbortException geworfen wird. Diese kannst Du hier aber unbeachtet lassen (es sei denn, Du müsstest noch Aufräumarbeiten durchführen :)
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort vorgeschlagen Stefan FalzModerator Dienstag, 2. November 2010 09:55
- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 11. November 2010 10:23
Alle Antworten
-
Hi,
Er aber wenn er einen Button klickt (hier wird div. ausgeführt ) kommt er in den Code ganz normal rein (obwohl ja im Loadevent auf IsAuthenticated geprüft wird)
Ich muss doch im Code vom Buttonclick nicht nochmal prüfen, oder?das liegt (sehr wahrscheinlich) an deinem zweiten Parameter "False" beim Redirect. Schreib dort mal True rein, dann wird der Request beendet.
Das, was hier passiert ist folgendes:
- Request kommt rein
- Page_Load wird aufgerufen
- Du rufst Response.Redirect auf
- Der Client erhält in diesem Moment eine entsprechende Rückgabe für die Umleitung
- Der restliche Code für den gesamten Request wird ausgeführt
Und genau das letzte ist das, was Du nun siehst.Mit Response.Redirect( "~/Default.aspx", True ) passiert das letztgenannte nicht, der Request bzw. Thread wird beim Redirect hart beendet. (Führt aber bspw. auch dazu, dass ggfs. noch offene Objekte existieren, bspw. Datenbankverbindungen, ...)
Achte auch darauf, dass bei True eine ThreadAbortException geworfen wird. Diese kannst Du hier aber unbeachtet lassen (es sei denn, Du müsstest noch Aufräumarbeiten durchführen :)
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort vorgeschlagen Stefan FalzModerator Dienstag, 2. November 2010 09:55
- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 11. November 2010 10:23