2009-06-29 9 views
47

Je suis trying to store some values in the Session from a Handler page, avant de faire une redirection vers une page WebForms, qui reprendra la session valeurs et pré-remplir le formulaire Web:ASP.NET: Comment accéder à Session depuis le gestionnaire?

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

Sauf context.Session objet est nul.

Comment accéder à l'état de session à partir d'un gestionnaire?

Répondre

104

implémentent l'interface System.Web.SessionState.IRequiresSessionState

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

} 
+0

Remarque: vous n'avez rien à implémenter, ajoutez simplement l'interface à votre classe. Le serveur web voit alors que vous le demandez, et le remplit. –

+3

Oui qui est encore en train d'implémenter l'interface mais comme il s'agit d'une interface de marqueur, il n'y a pas de code à écrire sinon la dérivation de l'interface . – JoshBerke

+0

Pour une raison quelconque, le mien ne fonctionnerait pas, même si 'IRequiresSessionState' est spécifié. J'ai dû utiliser 'IReadOnlySessionState'. Je n'ai pas encore étudié pourquoi, mais cela fonctionne .. – wasatchwizard

10

Mettre en œuvre IRequiresSessionState

7

Ne mettre en œuvre iRequiresSessionState résoudre ce problème? Qu'en est-il de faire un IHttpModule à la place et de surcharger BeginRequest?

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

Oui c'est le cas .... –

+0

Est-ce que quelqu'un sait ce qui est le meilleur des performances? –

+1

Je suis confronté au même problème J'ai utilisé iRequiresSessionState dans mon code de gestionnaire, mais je ne peux toujours pas accéder aux valeurs de session. les clés de session sont toujours 0. quelqu'un peut-il m'en parler? –

Questions connexes