2009-11-12 15 views
5

Tengo un problema en mi proyecto. Hay un panel de administración en mi sitio web. Las personas pueden iniciar sesión con un nombre de usuario y una contraseña que pueden editar el contenido del sitio web. Algunas veces un usuario puede tomar hasta 30-40 minutos para ingresar contenido, pero el tiempo de espera de la sesión expira después de solo 20 minutos.¿Cómo configurar el tiempo de espera de sesión más de 20 minutos?

probé a configurar esto en el web.config, por ejemplo:

<authentication mode="Windows"/> 
<sessionState timeout="60" /> 

y como este:

<system.web> 
    <sessionState timeout="60"></sessionState> 
</system.web> 

y también probamos en mi forma de esa manera:

if (ds.Tables["LOG"].Rows.Count > 0)   
{ 
    Session["IsLoggedIn"] = "true";   
    Session.Timeout = 60;    
    Response.Redirect("Default.aspx");  
}   
else  
{     
    Label1.Text = "Username/Password is wrong!!";  
} 

Ninguna de las soluciones anteriores funcionó. Intenté cada uno por separado y juntos, pero la sesión todavía expira después de 20 minutos.

+0

realmente no relacionadas con su pregunta, pero se debe considerar un mensaje de error más agradable en un inicio de sesión fallido. – Brandon

+0

Debería reparar su aplicación para que los tiempos de espera no importen: los usuarios envían su contenido, se les pide que inicien sesión de nuevo y su contenido no se pierde. Si va a usar tiempos de espera, alguien los golpeará sin importar cuánto tiempo los haga. – RichieHindle

+0

Escribí un mejor mensaje de error en turco, Brandon, no te preocupes :) –

Respuesta

12

Otra sugerencia es echar un vistazo a su configuración de IIS. Cuando tuve que cambiar mis tiempos de espera, tuve que hacer algunos cambios en el servidor también. Compruebe la configuración de tiempo de espera de inactividad para el grupo de aplicaciones. Si el sitio permanece inactivo (creo que es el valor predeterminado de 5 min), el grupo de aplicaciones se cierra para guardar los recursos del servidor. Esto matará a una sesión también.

Intente aumentar el tiempo de inactividad para el grupo de aplicaciones para ver si esto ayuda en absoluto.

IIS »Directorio» »Opciones de configuración Y apppool» Propiedades

Obviamente, si usted está en un entorno de alojamiento compartido es muy probable que no sea capaz de ajustar esto.

+0

lamentablemente estoy en un alojamiento compartido Qubar. –

+1

Cuando me encontré con la situación, parecía que el tiempo de espera de la sesión de IIS siempre prevalecía sobre lo que se definía en el archivo web.config. Tuvimos que subir IIS a 60 minutos. Intente trabajar con su proveedor compartido para averiguar qué han establecido para un tiempo de espera de sesión y si hay algo que pueda hacer al respecto. – BStruthers

+0

Muchas gracias! – Arpita

1

¿Estás seguro de que esa es la sesión que está expirando? También puede ser causado por el tiempo de espera de su autenticación (es decir, la cookie de autenticación expira después de 20 minutos). Asegúrese de que tanto el tiempo de espera de la sesión como el tiempo de espera de autenticación estén configurados en el mismo valor.

5

Cuando usa el modo de estado de sesión predeterminado de "InProc" (en proceso), como está, los datos de estado de sesión son muy frágiles y se pierden cada vez que el AppPool se recicla.

Considere utilizar los otros modos de estado de sesión incorporados, que se agotan y que, por lo tanto, son inmunes al reciclaje de AppPool. Estos son el modo "StateServer" (se ejecuta en la memoria en un proceso separado) y el modo "SqlServer" (datos de estado almacenados en SQL Server DB).

Deseará utilizar uno de estos modos de estado de sesión fuera de proceso para dar más robustez a sus datos de sesión, especialmente si requiere tiempos de espera de sesión más largos. Esto no responde a su pregunta de por qué su sesión expira prematuramente, pero será parte de la solución.

Los diversos modos de estado de sesión tienen todos sus puntos fuertes y débiles en términos de robustez, requisitos de memoria, escalabilidad y rendimiento, por lo que debe familiarizarse con ellos para identificar la elección correcta para su aplicación.

Como nota al margen, siempre considere si sus datos deben entrar en la sesión en absoluto. En general, es mejor usar ViewState cuando se requieren datos entre las devoluciones en la misma página, siempre que la cantidad de datos no sea demasiado excesiva. Es completamente posible desarrollar aplicaciones ASP.NET que no usen Session en absoluto, o usarlas con moderación, y generalmente las cosas funcionan mucho más intuitivamente cuando no se usa Session, por ejemplo. el botón Atrás del navegador.Su DB está ahí para persistir en sus datos, así que no dude en usarlo. Si está pasando tablas o conjuntos de datos entre páginas usando Session, considere si realmente necesita hacerlo. ¿Podría pasar los parámetros a través de la cadena de consulta y luego usar los parámetros para obtener los datos de su base de datos cuando se solicita la página?

Consulte: MSDN Session State Modes

+0

¡¡¡GRACIAS YOUU !!!!!! Vio este comentario por accidente buscando algo completamente diferente, estaba teniendo los problemas que "InProc" presenta pero nunca descubrió cómo solucionarlos. Gracias una vez más, gran comentario! –

Cuestiones relacionadas