2009-06-29 29 views
47

i estoy trying to store some values in the Session from a Handler page, antes de hacer una redirección a una página Web Forms, que recogerá los Sesión valores y pre-llenar el formulario Web:ASP.NET: ¿Cómo acceder a la sesión desde el controlador?

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

Excepto context.Session objeto es nulo.

¿Cómo puedo acceder al estado de sesión desde un controlador?

Respuesta

104

implementar la interfaz 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

Nota: no tiene que implementar nada, simplemente agregue la interfaz a su clase. El servidor web luego ve que lo está pidiendo y lo rellena. –

+3

Sí, que todavía está implementando la interfaz, pero dado que es una interfaz de marcador, no hay ningún código que tengamos que escribir aparte de la derivación de la interfaz. . – JoshBerke

+0

Por alguna razón, el mío no funcionaría, incluso con 'IRequiresSessionState' especificado. Tuve que usar 'IReadOnlySessionState'. No he investigado por qué todavía, pero está funcionando .. – wasatchwizard

10

Implementar IRequiresSessionState

7

Does implementar iRequiresSessionState resolver esto?

Lo que trata de hacer un IHttpModule lugar y anulando BeginRequest?

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

Sí lo hace .... –

+0

¿Alguien sabe cuál es mejor en cuanto a rendimiento? –

+1

me enfrento al mismo problema. Utilicé iRequiresSessionState en mi código de controlador pero todavía no puedo acceder a los valores de la sesión. las claves de sesión todavía son 0. ¿alguien puede decirme sobre esto? –

Cuestiones relacionadas