none
Duración de la Session RRS feed

  • Pregunta

  • Hola a todos

    Seguramente esto ya les ha pasado a muchos

    Tengo mi web.config configurado para que la sesión dure 60 minutos pero el servidor al que subo mi aplicación lo ignora totalmente, y es más, hace durar las sesiones menos de UN MINUTO. ¿A qué se debe?

    Esta es mi configuración:

    <sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="60"/>

    Gracias a todos !!!


    Daniel Dávila


    domingo, 10 de enero de 2016 20:37

Respuestas

  • Hola Daniel, me parece que tu configuración <sessionState> es incorrecta.

    Si lo que deseas es almacenar los datos de Sesión en un origen externo, por ejemplo, un servicio de estado o en un servidor SQL, el atributo mode, no debe ser InProc ya que esto indica que la sesión se guarde en memoria.

    Para utilizar un servidor SQL puedes utilizar la siguiente sintaxis:

    <sessionState 
                mode="SQLServer"
                sqlConnectionString="data source=127.0.0.1;user id=<username>;password=<strongpassword>"
                cookieless="false" 
                timeout="60" 
        />

    Para mayor referencia, puedes consultar el siguiente enlace: https://support.microsoft.com/en-us/kb/317604

    Espero haya yo entendido bien tu pregunta.


    -- Leo

    • Marcado como respuesta Daniel Dávila martes, 12 de enero de 2016 23:53
    domingo, 10 de enero de 2016 22:06
  • >>De hecho ya hice eso, de todas formas quiero descartar un error de parte de mi aplicación.

    Consultaste el soporte del hosting? que comentaron al respecto

    una consulta que debes hacerle al soporte del hosting, se relaciona con el "balanceo de carga" ? esto es fundamental ya que si los servidores estan configurados de esta forma una session en memoria no es aplicable

    Recuerda que si el servidor es balanceado, entonces puede que el cliente acceda a un servidor, pero el proximo request se realice a otro difernete, perdiendo la session

    ----

    Que pasa si creas un sitio en tu pc local, en el IIS y publicas tu aplicacion, en esta tambien se da el mismo problema con la session?

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina



    domingo, 10 de enero de 2016 22:21

Todas las respuestas

  • hola , y si le aumentas el timeout

    timeout="6000"


    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala.
    Saludos.
    Lima-Perú

    domingo, 10 de enero de 2016 20:46
  • hola

    >>pero el servidor al que subo mi aplicación lo ignora totalmente, y es más, hace durar las sesiones menos de UN MINUTO. ¿A qué se debe?

    es un servidor que tu administras o es un hosting ?

    ademas del config la session se puede configurar en el sitio por medio de IIS

    imagen

    quizas el valor que alli defines tiene mayor importancia que el especificado en el config

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    domingo, 10 de enero de 2016 20:49
  • hola

    pero qué configuración tiene el web.config del servidor al que subes? Es un hosting externo?


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    domingo, 10 de enero de 2016 20:49
    Moderador
  • Hola Leandro

    En efecto, no es un servidor que yo administre, se trata de un Hosting, al cual accedo por un panel de PLESK.

    Quedo atento a tu respuesta y ayuda.

    Saludos

    Danieñ


    Daniel Dávila

    domingo, 10 de enero de 2016 20:58
  • Hola Sergio, en efecto se trata de un Hosting externo, accedo a el por PLESK

    Daniel Dávila

    domingo, 10 de enero de 2016 20:59
  • >>se trata de un Hosting, al cual accedo por un panel de PLESK

    No intentaste concactar al soporte del hosting para plantearle el caso?

    Quizas sea algo que ellos debas cambiar en sus servidores, en la config del propio Application Pool en el IIS

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    domingo, 10 de enero de 2016 21:25
  • Hola Leandro

    De hecho ya hice eso, de todas formas quiero descartar un error de parte de mi aplicación.

    Saludos


    Daniel Dávila

    domingo, 10 de enero de 2016 21:27
  • Puedes establecer en el global.asax la configuración del timeout. L escribo en C# ya que no has especificado en qué lenguaje programas

    void Session_Start(object sender, EventArgs e)
    {
      Session.Timeout = 20;
    }


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    domingo, 10 de enero de 2016 22:00
    Moderador
  • Hola Daniel, me parece que tu configuración <sessionState> es incorrecta.

    Si lo que deseas es almacenar los datos de Sesión en un origen externo, por ejemplo, un servicio de estado o en un servidor SQL, el atributo mode, no debe ser InProc ya que esto indica que la sesión se guarde en memoria.

    Para utilizar un servidor SQL puedes utilizar la siguiente sintaxis:

    <sessionState 
                mode="SQLServer"
                sqlConnectionString="data source=127.0.0.1;user id=<username>;password=<strongpassword>"
                cookieless="false" 
                timeout="60" 
        />

    Para mayor referencia, puedes consultar el siguiente enlace: https://support.microsoft.com/en-us/kb/317604

    Espero haya yo entendido bien tu pregunta.


    -- Leo

    • Marcado como respuesta Daniel Dávila martes, 12 de enero de 2016 23:53
    domingo, 10 de enero de 2016 22:06
  • >>De hecho ya hice eso, de todas formas quiero descartar un error de parte de mi aplicación.

    Consultaste el soporte del hosting? que comentaron al respecto

    una consulta que debes hacerle al soporte del hosting, se relaciona con el "balanceo de carga" ? esto es fundamental ya que si los servidores estan configurados de esta forma una session en memoria no es aplicable

    Recuerda que si el servidor es balanceado, entonces puede que el cliente acceda a un servidor, pero el proximo request se realice a otro difernete, perdiendo la session

    ----

    Que pasa si creas un sitio en tu pc local, en el IIS y publicas tu aplicacion, en esta tambien se da el mismo problema con la session?

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina



    domingo, 10 de enero de 2016 22:21
  • Hola Leo, estoy usando el modo Inproc, para que las sesiones se usen en memoria, no en base de datos.

    Saludos!!!


    Daniel Dávila

    domingo, 10 de enero de 2016 22:48
  • Leandro

    Hice la consulta al soporte del hosting pero aun no hay respuesta.

    Hice un "publish" del proyecto en mi servidor local y funciona correctamente.

    Las pruebas que hago en el hosting funcionana bien mientras haga postbacks dentro de los primeros 30 o 40 segundos, lo dejo por un minuto y ya no funciona porque las sesiones se perdieron.


    Daniel Dávila

    domingo, 10 de enero de 2016 22:52
  • >>Hice la consulta al soporte del hosting pero aun no hay respuesta.

    Recomendaria esperar la respuesta, pero si puedes agregale la pregunta respecto al balanceo de carga, si es que el hosting lo implementa

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    domingo, 10 de enero de 2016 23:01
  • Daniel, en caso de que no desees SQL o State Server, prueba quitándole los valores que están de más: stateConnectionString y sqlConnectionString para que quede de la siguiente forma:

    <sessionState mode="InProc" cookieless="false" timeout="60"/>

     Yo así lo tengo en mis aplicaciones Web.

    -- Leo

    domingo, 10 de enero de 2016 23:05
  • En que te basas para decir que dura menos del minuto. estas tratando de escribir a la session pero en que evento?. Pudieras ser mas explicito entre que peticiones expira ?.
    lunes, 11 de enero de 2016 1:04
  • Leandro

    Ok, eso haré, gracias por la guía, los mantendré al tanto.

    Saludos, Daniel


    Daniel Dávila

    lunes, 11 de enero de 2016 5:09
  • Hola Leo, gracias, probaré lo que me indicas.

    Saludos


    Daniel Dávila

    lunes, 11 de enero de 2016 5:10
  • Roberto

    Pasa que guardo el ID de un usuario en una variable de sesión, en mi ambiente de desarrollo las páginas cargan la info de este usuario leyendo la variable, y si al invocar a una página luego de un tiempo prudencial de inactividad, se detecta que está vacía o no existe, lo redirijo a un login.

    En el hosting, la redirección se da luego de un minuto de inactividad.

    Saludos


    Daniel Dávila

    lunes, 11 de enero de 2016 5:14
  • Hola Leandro

    Te comento que el soporte del hosting aún no responde, pero si los espero me hago viejo. Asi que decidí aplicar al sessionState el modo de SQLServer y crear su respectiva base de datos (como sugirió Leo Mugue) y con esto ya funcionó.

    Es muy probable que este hosting tenga el Balanceo de Carga que mencionas ya que luego salió otro error ("validation of viewstate mac failed") que tiene que ver con el tema y con los "web farm". Tuve que generar un "machineKey" en el web.config... toda una odisea !!!

    Gracias a ti y a todos por sus respuestas!!!!

    PD: Igual estaré a la espera de lo que diga el soporte del hosting.


    Daniel Dávila

    martes, 12 de enero de 2016 23:53
  • Muy bien Daniel :-)

    Ahora tu app ya está lista para trabajar en una granja de servidores y ya puedes escalarla.

    Ahora te toca probar que lo que guardas en sesión sea serializable.


    -- Leo

    miércoles, 13 de enero de 2016 0:46