HttpContext.Aktuelle.Session-null-Element
ich bin die Speicherung in HttpContext.Aktuelle.Sitzung Aktueller Benutzer, SiteUser ist single-Ton-Klasse, präsentiert aktuelle aktiv-siteuser, und wenn er angemeldet ich bin die Schaffung neuer SiteUser() im controller und im Konstruktor hinzufügen, ihn zu der Sitzung:
public static SiteUser Create()
{
HttpContext.Current.Session[sessionKey] = new SiteUser();
return HttpContext.Current.Session[sessionKey] as SiteUser;
}
dann, mit jeder Anfrage an der server-Dienste, die ich bin überprüfung ist Benutzer zur Verfügung in der Sitzung:
public static SiteUser Current
{
get
{
if (HttpContext.Current.Session == null || HttpContext.Current.Session[sessionKey] == null)
{
throw new SiteUserAutorizationExeption();
}
return HttpContext.Current.Session[sessionKey] as SiteUser;
}
}
sonst bin ich erzeugen non-auth-user-Ausnahme und leiten ihn auf die Anmelde-Seite.
aber manchmal HttpContext.Aktuelle.Session[sessionKey] null ist, aber HttpContext.Aktuelle.Session nicht null und FormsAuthenticationTicket verfügbar ist und Abgelaufen Eigenschaft ist auch falsch.
kann mir jemand helfen, warum HttpContext.Aktuelle.Session[sessionKey] kann null sein?
UPD: webconfig-Sitzung-Einstellungen: <sessionState mode="InProc" timeout="20" />
UPD: sessionKey ist: public const string sessionKey = "SiteUser";
UPD2: ich hab vergessen zu ergänzen, dass in der session gespeichert, Kultur Einstellungen:
HttpContext.Current.Session["Culture"]
und bei der Ausnahme hat, dass HttpContext.Aktuelle.Session[sessionKey] ist null -, Kultur-Element nicht
UPD3: ich habe heruntergeladen, symbol-Tabellen der Quelle .NET Framework und setzen Sie Haltepunkte an SessionStateItemCollection auf ändern Sammlung Elemente. und ich beschloss, dass ich einige Fehler:
1) alle Sammlungsobjekte sind null — "Kultur" nach
2) es geschieht am Ende der Sitzung Veranstaltung
ich kann nicht verstehen, wie es sein kann, weil im web.config session-timeout eingestellt ist 20
mmm.. ich bin mit InProc-session-Modus, wird es bedeuten, dass die Sitzung im Arbeitsspeicher? ist der IIS vielleicht recycling der app-pool - ich weiß nicht sicher, momentan bin ich am laufen asp.net Entwicklung server
Ich glaube nicht das der dev server wird recyceln - das ist ein IIS Sache
Hast du dein problem lösen?
ja. das eigentliche problem war in den IIS-cache-Einstellungen. unter hoher Last kann es cache-cookies mit sessions
InformationsquelleAutor Boo | 2011-01-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
sessionKey kann sich ändern, Sie wahrscheinlich müssen nur zu tun:
Oder die Sitzung abläuft, überprüfen Sie die timeout:
http://msdn.microsoft.com/en-us/library/h6bb9cz9(VS.71).aspx
Oder Sie können festlegen des Sitzungs-Wert von woanders, normalerweise kontrolliere ich den Zugriff auf Session/Context-Objekt über eine Eigenschaft
InformationsquelleAutor djeeg