none
Como puedo guardar en una variable de Session un objeto de tipo Clase ? RRS feed

  • Pregunta

  • Hola ...

    Tengo una aplicacion  Mvc Asp.Net Core

    Si por ejemplo tengo una clase  donde solo tengo propiedades , quisiera saber si puedo asignarla a una variable de session?

    he visto que solo puedo hacer :

      HttpContext.Session.SetInt32("IndiceClientGroup", indice);
    
      HttpContext.Session.SetString("Nombre", nombre);

    pero quisiera hacer algo como esto :

    public class Person { public string Nombre {get;set;} public string Apellido {get;set;} public int Edad {get;set;} } public AsignarASession(Person Persona)

    { HttpContext.Session.SetObject("ClasePersona", Persona);

    }



    EFRAIN MEJIAS C VALENCIA - VENEZUELA



    viernes, 5 de abril de 2019 17:36

Respuestas

  • Sí, puedes asignar sin ningún problema un objeto cualquiera al Session. Recuerda que tendrás que hacer un "cast" al tipo correcto cuando lo recuperes desde el Session.

    PERO: Una precaución: debes cuidar que la clase sea [Serializable]. En principio, si no lo es, no ocasiona ningún error, en tanto que el Session lo tengas en modo "InProc", que es el valor por defecto. Pero el día que la carga sobre tu aplicación crezca y la quieras desplegar sobre una granja de servidores, tendrás que cambiar el .config para sacar la Sesión del proceso y poderla compartir entre los servidores de la granja. Y en ese momento te dará un error si no es Serializable. Arreglar esto a posteriori suele ser muy costoso si la aplicación es grande y compleja, así que te recomiendo que marques la clase como serializable desde un principio para no tener problemas en el futuro.


    [Serializable]
    public class Person {
        public string Nombre {get;set;}
        public string Apellido {get;set;}
        public int Edad {get;set;}
    }

    viernes, 5 de abril de 2019 18:15