sesion net mvc asp c# asp.net-mvc session exists

net - ¿C#no se puede comprobar si existe sesión?



sessionid asp net core (8)

El [] es un indexador, actúa como un método en la clase.

En este caso, la sesión es nula y no puede realizar la indexación en ella.

Hacer esto:

if(Session != null && Session["value"] != null) { // code }

Me sale un error cuando hago lo siguiente:

if(Session["value"] != null) { // code }

El error que recibo es este:

Referencia a objeto no establecida como instancia de un objeto.

¿Por qué es esto? Siempre reviso mi sesión de esta manera? Estoy usando MVC Framework, ¿esto tiene algo que ver con eso?

EDITAR:

El código está en el constructor de un Controlador:

public class MyController : ControllerBase { private int mVar; public MyController() { if (Session["value"] != null) { mVar= (int)Session["value"]; } } }


La sesión solo existe realmente durante el procesamiento de una acción; no esperaría que fuera válida en el constructor de un controlador. Por ejemplo, el controlador podría (por lo que sé) reutilizarse entre solicitudes.

Deberá hacer esto ya sea en la acción (método), o (quizás más adecuadamente) en un filtro de acción, o en los OnActionExecuting (etc.):

public abstract class ControllerBase : Controller { protected override void OnActionExecuting( ActionExecutingContext filterContext) { // code involving this.Session // edited to simplify base.OnActionExecuting(filterContext); // re-added in edit } }


La sintaxis utilizada por usted:

if (Session["mySessionVariable"] != null) { }

... es la forma correcta de verificar un objeto Session en ASP.NET. Sospecho que el problema se debe a que está utilizando ASP.NET MVC.

Tal vez algunos de nuestros expertos en MVC pueden ilustrarnos sobre la forma correcta de hacerlo en ASP.NET MVC.

Edit: veo que Marc Gravell ha publicado su respuesta mientras escribo esto. Eso debería ser iluminatorio.


Lo soluciono de esta manera:

if (Session.Count > 0 && Session["mySessionVariable"].ToString() != null) { }


Recibirá este error porque el objeto "Sesión" es nulo. Por lo tanto, es imposible mirar el bit ["valor"]. No estoy familiarizado con MVC, pero o bien hay un problema mayor por el cual no se está creando el objeto Session, o está accediendo a él en el punto equivocado del ciclo de vida, o simplemente necesita una prueba para verificar si Session! = nulo.


También puedes usar:

if (Session == null || String.IsNullOrEmpty((string)Session["session_object"])){ // Do something }


Tendrás que hacerlo así.

if(null != HttpContext.Current.Session["Value"]) { //Code here. }


if(Session != null && Session["name"] != null && Session["name"].ToString()!="") { //fire code }