2012-07-12 21 views
35

Quiero acceder a algún valor (que ya está establecido en el archivo .aspx) en el archivo .ashx. Traté de obtener ese valor usando la cadena de consulta, sesión, etc., pero cada vez falló. ¿Alguien puede sugerirme cómo podemos acceder al valor de la sesión en el archivo .ashx?¿Cómo acceder a la Sesión en el archivo .ashx?

+0

"HttpContext.Current.Session" He probar este tope siempre obtener una excepción. –

+4

¿Qué excepción recibe? – mrd

+0

@mrd +1: todo puede fallar de varias maneras ... :) – Onkelborg

Respuesta

40

En aspx:

Session.Add("filename", "Test.txt"); 


Después de haber establecido valor de sesión en el archivo aspx. Use following para obtener el valor en el archivo ashx.

En ashx archivo:

public class ImageHandler : IHttpHandler, System.Web.SessionState.IRequiresSessionState 
{ 
    public void ProcessRequest(HttpContext context) 
    { 
     string Name = ""; 
     if (context.Session["filename"] != null) 
     Name = context.Session["filename"].ToString(); 
    } 
} 
+0

¿Cómo establecer una variable de sesión? context.Session ["filename"] = "somevalue"; ¿es correcto? – efirat

+1

Si está configurando la variable de sesión en la página aspx, simplemente use Session ("filename") = "somevalue". Y si está configurando el controlador como arriba, use context.Session ["filename"] = "somevalue". – mrd

+9

La parte clave de esta respuesta es que el controlador debe modificarse para heredar de IRequiresSessionState para tener acceso a la sesión. –

0

Prueba de esto,

HttpContext.Current.Session 
+4

esto todavía requiere la información de la respuesta anterior –

51

En el archivo ashx.cs, también "poner en práctica" la interfaz System.Web.SessionState.IReadOnlySessionState o System.Web.SessionState.IRequiresSessionState.

No tiene que implementar ningún método, solo la presencia de esto hace que la sesión esté disponible (en modo de solo lectura o lectura/escritura), a través de context.Session.

La cabecera se vería así:

public class MyHandler: IHttpHandler, System.Web.SessionState.IReadOnlySessionState 
+0

¡¡¡Gracias !!!!! – kevin

+0

¡Respuesta impresionante! De alguna manera salvó mi vida. ¡Gracias! –

+2

Te amo. Por alguna razón, este problema solo se manifestó en Visual Studio 2013 (VS2013). ¿Podría ser por la versión .NET o la versión Express de IIS que usa (IIS 7?) ¡Gracias por la ayuda! – Suamere

Cuestiones relacionadas