2009-06-29 12 views
47

ich bin trying to store some values in the Session from a Handler page, bevor ich eine Umleitung auf eine WebForms Seite tun, damit die Session Werte abholt und Vorfülle Web-Formular aus:ASP.NET: Wie auf Sitzung von Handler zugreifen?

public class Handler : IHttpHandler 
{ 
    public void ProcessRequest(HttpContext context) 
    { 
     ... 
     context.Session["StackOverflow"] = "overflowing"; 
     context.Response.Redirect("~/AnotherPage.aspx"); 
     ... 
    } 
    ... 
} 

Außer context.Session Objekt null ist.

Wie greife ich auf Session-Status von einem Handler?

Antwort

104

Implementieren Sie die System.Web.SessionState.IRequiresSessionState Schnittstelle

public class Handler : IHttpHandler, System.Web.SessionState.IRequiresSessionState 
{ 
    public void ProcessRequest(HttpContext context) 
    {  
    context.Session["StackOverflow"] = "overflowing";  
    context.Response.Redirect("~/AnotherPage.aspx");  
    } 

} 
+0

Hinweis: Sie müssen nichts implementieren, fügen Sie nur die Schnittstelle zu Ihrer Klasse hinzu. Der Web-Server sieht dann, dass Sie danach fragen, und füllt es aus. –

+3

Ja, das immer noch die Schnittstelle implementiert, aber da es eine Marker-Schnittstelle ist, gibt es keinen Code, den wir anders als die Ableitung der Schnittstelle schreiben müssen . – JoshBerke

+0

Aus irgendeinem Grund würde meins nicht funktionieren, auch wenn 'IRequiresSessionState' angegeben wurde. Ich musste 'IReadOnlySessionState' verwenden. Ich habe noch nicht recherchiert warum, aber es funktioniert .. – wasatchwizard

10

Implement IRequiresSessionState

7

diese iRequiresSessionState Entschlossenheit Hat der Umsetzung?

Wie wäre es stattdessen mit einem IHttpModule und überschreiben BeginRequest?

public void Init(HttpApplication application) 
    { 
     application.BeginRequest += new EventHandler(context_BeginRequest); 
    } 
+0

Ja, es tut .... –

+0

Weiß jemand, welche Leistung besser ist? –

+1

Ich bin mit dem gleichen Problem konfrontiert Ich habe iRequiresSessionState in meinem Handler-Code verwendet, aber ich kann immer noch nicht auf Sitzungswerte zugreifen. Sitzungsschlüssel sind immer noch 0. Kann mir jemand davon erzählen? –

Verwandte Themen