2012-11-09 7 views
11

Ich erhalte einen Fehler "Sitzungsstatus in diesem Kontext nicht verfügbar".Sitzungsstatus in diesem Kontext nicht verfügbar - In Global.asax

enter image description here

Der Fehler in dem Senderparameter einer Anzahl von Verfahren in der Datei Global.asax verschachtelt ist:

  • Application_BeginRequest
  • Application_AuthenticateRequest
  • Session_Start
  • Application_Error

Der Fehler tritt beim ersten Laden der Seite auf (und danach bei allen Seitenladevorgängen).

Ich habe eine komplett neue und leere Seite, WebForm1.aspx, zum Projekt hinzugefügt und es zu meiner Startseite gemacht.

Sie könnten denken, nichts könnte auf einer leeren Seite schief gehen. Kein Code von mir wird ausgeführt, soweit ich das sehe, wenn eine leere Seite geladen wird. Aber ich bekomme immer noch den Sitzungsstatusfehler.

Mein Projekt funktioniert völlig in Ordnung. Es werden keine Fehlerseiten angezeigt. Es gibt zu keinem Zeitpunkt ein falsches Verhalten.

Aber die Tatsache, dass dieser Sitzungsfehler im Absenderparameter meines aktuellen Projekts auftaucht, stört mich. Dieser Fehler ist nicht in einem leeren, neuen Projekt generiert.

Was kann möglicherweise die Ursache für diesen Fehler in meinem aktuellen Projekt sein?

Wie kann ich verfolgen, wo der Fehler auftritt? Ich kann keine Haltepunkte in ASP.NET-Code setzen, der unter der Haube ist. Oder kann ich?

Hier ist meine Session-Konfiguration:

<pages enableSessionState="true" /> 
<sessionState mode="InProc" cookieless="false" timeout="20" /> 

Update:

ich gerade herausgefunden, dass ein ganz neues leeres Projekt hat auch diesen Fehler in dem Senderobjekt. Es ist in den Methoden Application_BeginRequest und Application_AuthenticateRequest sichtbar. Aber das leere Projekt erzeugt nicht das Ereignis Application_Error, wie mein anderes Projekt.

Antwort

23

Sie fordern den Sitzungszustand zu früh im Zyklus an. Sie müssen es in Application_AcquireRequestState

+0

Ich ersuche nichts. Kein Code von mir wird ausgeführt, bevor dieser Fehler im Absenderobjekt angezeigt wird. Beachten Sie, dass die aufgelisteten Methoden auch die Application_Error-Methode enthalten. Ein Fehler wird definitiv erzeugt. Und ich kann nicht sagen, woher es kommt. – Jay

+1

Dies sollte die Antwort sein. Dies ist der Grund, wenn wir SessionState nicht bei einer früheren Veranstaltung erhalten. –

+0

Danke, das hat mein Problem in genau der gleichen Situation gelöst wie das OP. +1 – Deverill

3

"Wenn ein Baum fällt in einem Wald und niemand ist da, um es zu hören, macht es ein Geräusch?"

Überwachen Sie die Session-Eigenschaft nicht an dem Punkt, an dem sie noch nicht verfügbar ist.

+1

Ich bin nicht. Die Application_BeginRequest-Ereignisse, die ausgelöst werden, nachdem das Session_Start-Ereignis ausgelöst wurde, zeigen weiterhin den Fehler an. Und dann ist das Ereignis Application_Error, das ausgelöst wird. Noch einmal ... dieser Fehler tritt auf, wenn eine leere Seite geladen wird. Wie Sie sehen, gibt es keinen Code im Application_Start, der dies verursachen könnte. – Jay