Tiempo de espera de la sesión en ASP.NET

Estoy ejecutando una aplicación ASP.NET 2.0 en IIS 6.0. Quiero que el tiempo de espera de la sesión sea de 60 minutos en lugar de los 20 minutos predeterminados. He hecho lo siguiente

  1. establecido en web.config
  2. Establezca el tiempo de espera de la sesión en 60 minutos en Administrador de IIS / Propiedades del sitio web / Configuración de configuración de ASP.NET
  3. Establezca el tiempo de espera inactivo en 60 minutos en las propiedades / rendimiento del grupo de aplicaciones.

Todavía estoy obteniendo un tiempo de espera de sesión de 20 minutos. ¿Hay algo más que deba hacer?

¿Estás usando autenticación de formularios?

La autenticación de formularios usa su propio valor para el tiempo de espera (30 minutos por defecto). Un tiempo de espera de autenticación de formularios enviará al usuario a la página de inicio de sesión con la sesión todavía activa. Esto puede parecerse al comportamiento que da tu aplicación cuando la sesión se agota, lo que hace que sea fácil confundir una con la otra.

      

Establecer el tiempo de espera de los formularios en algo menos que el tiempo de espera de la sesión puede darle al usuario una ventana en la que volver a iniciar sesión sin perder ningún dato de sesión.

Use el siguiente bloque de código en su archivo web.config. Aquí el tiempo de espera predeterminado de la sesión es de 80 minutos.

    

Use el siguiente enlace para el tiempo de espera de la sesión con un mensaje de alerta emergente.

Ejemplo de tiempo de espera de la sesión

FYI: Los ejemplos anteriores se realizan con el control emergente devexpress, por lo que debe personalizar / reemplazar el control emergente devexpress con el control emergente normal. Si usa devexpress no necesita personalizar

No sé sobre web.config o IIS. Pero creo que desde el código C # puedes hacerlo como

 Session.Timeout = 60; // 60 is number of minutes 

Eso es generalmente todo lo que necesitas hacer …

¿Estás seguro de que después de 20 minutos, la razón por la que la sesión se está perdiendo es por estar inactivo …

Hay muchas razones por las cuales se puede borrar la sesión. Puede habilitar el registro de eventos para IIS y luego puede usar el visor de eventos para ver las razones por las cuales se borró la sesión … ¿puede que lo encuentre por otras razones quizás?

También puede leer la documentación de los mensajes de eventos y la tabla de eventos asociada.

¿Tiene algo en machine.config que pueda estar teniendo efecto? Establecer el tiempo de espera de la sesión en web.config debe anular cualquier configuración en IIS o machine.config, sin embargo, si tiene un archivo web.config en alguna parte de una subcarpeta en su aplicación, esa configuración anulará la que está en la raíz de su aplicación.

Además, si recuerdo correctamente, el tiempo de espera en IIS solo afecta a las páginas .asp, no a .aspx. ¿Estás seguro de que tu código de sesión en web.config es correcto? Debería verse algo así como:

  

En mi situación, era Application Pool. Está configurado para reiniciar cuando está inactivo durante xx minutos. Cuando lo configuro para que no se reinicie, parece usar el valor de Web Config.

Si está utilizando Autenticación, le recomiendo agregar lo siguiente en el archivo web.config.

En mi caso, los usuarios son redirigidos a la página de inicio de sesión al agotar el tiempo de espera:

    

El valor de tiempo de espera de las sesiones de IIS es solo para aplicaciones clásicas de .asp, esto se controla en la configuración de IIS. En su caso Para aplicaciones ASP.NET, solo se aplica el valor de tiempo de espera especificado por web.config.

Puede encontrar la configuración aquí en IIS:

Configuraciones

Se puede encontrar en el nivel del servidor, el nivel del sitio web o el nivel de la aplicación en “ASP”.

Creo que puedes configurarlo en el nivel web.config aquí. Por favor confirma esto por ti mismo.

       

si quieres tiempo de espera de sesión para el sitio web que eliminar

    

etiqueta del archivo web.config.

Dado que ASP.Net core 1.0 (vNext o cualquier nombre que se use para ello) las sesiones se implementan de forma diferente. Cambié el valor de tiempo de espera de la sesión en Startup.cs , void ConfigureServices usando:

 services.AddSession(options => options.IdleTimeout = TimeSpan.FromSeconds(42)); 

O si desea utilizar el archivo appsettings.json , puede hacer algo como:

 // Appsettings.json "SessionOptions": { "IdleTimeout": "00:30:00" } // Startup.cs services.AddSession(options => options.IdleTimeout = TimeSpan.Parse(Config.GetSection("SessionOptions")["IdleTimeout"])); 

La propiedad Timeout especifica el tiempo de espera asignado al objeto Session para la aplicación, en minutos. Si el usuario no actualiza o solicita una página dentro del período de tiempo de espera, la sesión finaliza.

IIS 6.0: el valor mínimo permitido es 1 minuto y el máximo es 1440 minutos.

 Session.Timeout = 600; 

Después de cambiar el valor de tiempo de espera de la sesión en IIS, reinicie amablemente el IIS. Para lograr esto, vaya al símbolo del sistema. Escriba IISRESET y presione enter.