httphandler session-state

¿Cómo usar el estado de sesión de ASP.NET en un HttpHandler?



session-state (4)

Creo que tienes que implementar la interfaz vacía IReadOnlySessionState , para que se cargue el contexto.

Editar para añadir:

De acuerdo con la respuesta de Michael Morton, también puede implementar IRequiresSessionState , que le dará acceso de escritura también al objeto Session.

Tengo un HttpHandler que se ejecuta en una página de cliente (dominio cruzado, no en nuestro servidor IIS, etc.) y cuando hacen clic en nuestro enlace incrustado, este dispara el Controlador en nuestro servidor. Hasta ahora todo funciona normalmente.

Ahora estoy tratando de usar el objeto System.Web.HttpContext.Session pero es nulo. ¿Estoy pensando que es nulo porque no tenemos una sesión hasta que se invoca a HttpHandler? ¿Y varias llamadas al controlador crearán una nueva sesión por llamada? Si este es el caso, ¿MS simplemente deshabilitó el objeto Session al llamar a un HttpHandler? ¿Alguien puede confirmar esto?

Si este es el caso, ¿qué hace para mantener el estado entre las llamadas? ¿Algún tipo de objeto de datos basado en SQL? ¿Un archivo?

TIA


intenta usar el contexto actual ...

System.Web.HttpContext.Current.Session


Haga que su HttpHandler implemente la interfaz IRequiresSessionState . Permitirá el uso del estado de sesión. IRequiresSessionState se puede encontrar en el espacio de nombres System.Web.SessionState .


using System; using System.Web; using System.Web.SessionState; public class DownloadHandler : IHttpHandler, IReadOnlySessionState { public bool IsReusable { get { return true; } } public void ProcessRequest(HttpContext context) { context.Response.Write(context.Session["kmx"]); } }