2013-04-22 3 views
9

Ich habe einen Webhandler, der auf Anfrage ein Bild in meinem asp.net-Projekt erzeugt. Wenn der Benutzer jedoch direkt auf die Ressource zugreift, wird in der Datei "Global.asax" das Ereignis "Session Start Event" nicht ausgelöst. Aber in meinem Projekt muss ich das Sitzungsstart-Ereignis auslösen. Wie kann ich das erreichen?Wie kann ich Session Start (Global.asax) -Ereignis für eine WebHandler-Anfrage auslösen?

void Session_Start(object sender, EventArgs e) 
    { 
     Session["Test"] = 1; 

    } 

Antwort

7

Das Session_Start Ereignis wird trigerred, wenn einige Server-Seite-Handler entweder versucht, zu lesen oder zu der Sitzung schreiben. Sie könnten versuchen, Ihren Handler mit dem IRequiresSessionState Marker Schnittstelle Dekoration:

public class MyHandler: IHttpHandler, IRequiresSessionState 
{ 
    ... 
} 
+1

Anruf mit 'System.Web.SessionState'. Recht? –

+0

Ja, richtig, wie in der Dokumentation gezeigt. –

+0

Lass mich dich etwas mehr fragen? Manchmal eine andere Frage? Was ist, wenn ich die Sitzung in WebHandler verwenden möchte, aber nicht den Sitzungsstart auslösen möchte? –

3

Sie immer ein Verfahren der Session_Start machen und es

namespace WebFormsApplication1 
{ 
    public class Global : HttpApplication 
    { 
     void Session_Start(object sender, EventArgs e) 
     { 
      Global.StartSession(); 
     } 
    } 

    public static class Global 
    { 
     public static void StartSession() { 

      Session["Test"] = 1; 
     } 
    } 
} 

und in Ihrem Handler ruft, einfach Global.StartSession();

+1

Kann ich die Sitzung in WebHandler verwenden, ohne das Sitzungsstart-Ereignis auszulösen? –

Verwandte Themen