2009-07-30 41 views
138

He intentado con todas mis fuerzas, pero no encuentro una solución sobre cómo configurar el valor de tiempo de espera de la sesión en proceso para una aplicación web ASP.Net.Cómo establecer el tiempo de espera de la sesión en web.config

Estoy usando VSTS 2008 + .Net 3.5 + C#. Esto es lo que escribí yo mismo para establecer el tiempo de espera en 1 minuto, ¿es correcto?

que escribió en la sección system.web en el web.config

<sessionState timeout="1" mode="InProc" /> 
+5

La forma se define el tiempo de espera es correcta. ¿Tienes algún problema con eso? –

+4

sí, está bien .. –

+7

¿Sabe que esto significa que caducará después de 1 minuto de inactividad, no después de 1 minuto desde su inicio? Supongo que si haces esta pregunta y has escrito el tiempo de espera correctamente, es posible que te desvíes de cómo funciona. –

Respuesta

255

Si desea establecer el tiempo de espera de 20 minutos, usar algo como esto:

<configuration> 
    <system.web> 
    <sessionState timeout="20"></sessionState> 
    </system.web> 
</configuration> 

que debería ver a la derecha

+11

20 minutos u horas? (timeout = "20") –

+13

Config indica el tiempo de espera en minutos, por lo que 20 minutos – Wolfwyrd

44

El valor que está configurando en el atributo timeout es una de las formas correctas de establecer el valor de tiempo de espera de la sesión.

El atributo timeout especifica la cantidad de minutos que una sesión puede estar inactiva antes de que se abandone. El valor predeterminado para este atributo es 20.

Al asignar un valor de 1 a este atributo, ha establecido que la sesión se abandone en 1 minuto después de su inactividad.

Para probar esto, crear una simple página aspx, y escribe este código en el evento Page_Load,

Response.Write(Session.SessionID); 

Abra un navegador y vaya a esta página. Se imprimirá una identificación de sesión. Espere un minuto para pasar, luego pulse actualizar. La identificación de sesión cambiará.

Ahora, si mi suposición es correcta, quiere hacer que sus usuarios cierren sesión tan pronto como la sesión expire. Para hacer esto, se puede armar una página de inicio de sesión que verificará las credenciales de usuario y crear una variable de sesión como esto -

Session["UserId"] = 1; 

Ahora, tendrá que realizar una comprobación en cada página de esta variable como esto -

if(Session["UserId"] == null) 
    Response.Redirect("login.aspx"); 

Este es un ejemplo escueto de cómo va a funcionar esto.

Pero, para hacer que sus aplicaciones de calidad de producción sean seguras, use las clases Roles & Membership proporcionadas por ASP.NET. Proporcionan autenticación basada en formularios que es mucho más confiable que la autenticación basada en sesiones normal que está tratando de usar.

+0

Un gran consejo ... Asegúrese de establecer una variable de sesión primero antes de probar con Response.Write (Session.SessionID); de lo contrario, se actualizará con una nueva ID cada vez que actualice. –

1

Uso esto en web.config:

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

No necesita la mayoría de los atributos que lista, simplemente 'timeout' realmente. 'stateConnectionString' y' sqlConnectionString' se ignoran cuando 'mode =" InProc "', y los valores para 'mode' y' cookieless' se establecen en sus valores predeterminados. Entonces, esto realmente se diluye en la respuesta de Wolfwyrd. – arcain

Cuestiones relacionadas