Sitzung endet nach dem Zufallsprinzip umleiten nach
Ich habe ein seltsames problem in ASP .NET MVC 4. In AccountController ich mache Weiterleitungen auf bestimmte Aktionen und Daten in TempData (gespeicherte Sitzung) vor, dass:
[AllowAnonymous]
public ActionResult Activate(string token)
{
new CustomSignupService().Activate(token);
TempData["Message"] = "User was successfully confirmed";
return RedirectToAction("Message", "Home")
}
Nun, ich weiß, ich könnte einfach zurück shared Message-Ansicht in diesem Fall, aber das ist nur ein Beispielcode um das problem zu reproduzieren.
CustomSignupService.Aktivieren hat einen db-lookup via NHibernate und updates Benutzer in der Transaktion (Benutzer-Aktivierung). Manchmal (sagen wir 1/5 versucht in 5 Minuten) TempData nicht machen es durch die Umleitung, also ich habe die Protokollierung in Session_End und bemerkt, dass die session endet, wenn RedirectToAction aufgerufen. Direkt nach Session_Start aufgerufen wird, aber natürlich TempData ist Weg.
Sitzung hat die Standard-timeout (20min) und Controller verwenden SessionStateBehavior.ReadOnly
Irgendwelche Ideen?
UPDATE
Schritt 1: Es ist nicht Anwendungspool recycling (drehte ich mich auf alle Allgemeinen Recycle-Event-Log-Einträge, die auf Application pool und überprüft Ereignis-Protokoll nach der Sitzung neu gestartet, aber Recycling ist nicht verursacht es)
- Ähnliches Thema; meine Antwort es kann hilfreich sein: stackoverflow.com/a/23804262/3253726
- Ich habe das exakt gleiche Verhalten. Haben Sie jemals finden eine Ursache?
- Nein, leider habe ich nicht @jas
- Am Ende, ich denke, mein problem war anders. Jemand hatte den app pool recyceln, um eine geringe Anzahl von Anfragen, und es war recycling während des Last-Tests sehr schnell, dieses problem verursacht. (Wurde auf 500 gesetzt, aber wir machten 100te von Anfragen pro Sekunde) @PavleGartner
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hatte ich ein problem mit der Session verloren gehen. Ich verwendet Fiddler und bemerkte, dass es ein Duplikat ASP.NET session-cookie mit einem leeren Wert. Ich weiß nicht, wie es dorthin kam. So wird eine neue Sitzung erstellt wurde, auf jede Anfrage. Ich gelöscht, die doppelten cookie und das problem war gelöst.
Anderen Gründen unwahrscheinlich sind:
IIS-Prozess zu recyceln
Sitzung.aufgeben aufgerufen
geändert wird, bin-Ordner oder web.config verursacht app neu starten
Schauen Sie sich diese Seite:
Sitzungszustand Verlieren
Weiß ich nicht ASP.NET MVC-aber in der dunklen Jahrhunderte, die ich verwendet ASP.NET ohne MVC. Ich kämpfte mehrmals mit unerwarteten Sitzung beendet. Die meisten der Zeit, es wurde verursacht durch einige einfache Dinge, die beschrieben werden in den Artikel http://www.c-sharpcorner.com/uploadfile/technoNet/session-timeouts-causes-and-remedies/
Manchmal der server hat Einträge in das Ereignisprotokoll, das gibt Ihnen ein wenig mehr Informationen.
Und einige andere Lösungen könnten sein
ASP.NET Sitzung endet abrupt
random IIS session timeout