2011-05-20 14 views
5

¿Es posible establecer un tiempo de espera diferente para una sesión diferente en ASP.Net?Establecer un tiempo de espera diferente para las diferentes variables de sesión en ASP.Net

Editado quiero decir que en la misma página que tengo 2 sesiones variable de sesión [ "SS1"] y [Sesión "SS2"], no es posible establecer el tiempo de espera para cada sesión? ¿O de todos modos hay que hacer lo mismo, como guardar sesión en cookie y establecer caducar? Sry im apenas nuevo a ASP.Net

+0

Se necesita más información para comprender su pregunta – jams

+0

¿Cuál es su significado "diferente"? – jams

+0

¿Marcó usted: http://forums.asp.net/t/1563991.aspx/1? – NaveenBhat

Respuesta

0

Si estamos hablando de tiempo de espera de la sesión para los diferentes usuarios a continuación Se puede utilizar en este Global.asax puede utilizar Session_Start evento y en este caso se puede establecer la sesión de tiempo de espera de forma diferente para diferentes usuarios

3

establecer cualquier tiempo de espera en el momento de inicio de sesión, puede establecer diferentes de tiempo de espera para los diferentes usuarios ...

HttpContext.Current.Session.Timeout = 540; 
+0

KamalaPrakash establezco el tiempo de espera de la sesión de esta manera. ¿Ya no se verá en web.config? – levi

0

la respuesta es no el tiempo de espera de la sesión se aplica a todas las variables de sesión por usuario. Sin embargo, puede usar el caché o una cookie que admiten tiempo de espera en un nivel individual (por clave).

Pero espere esas soluciones no vienen sin algunos inconvenientes importantes. Si utiliza la memoria caché, pierde la privacidad que proporciona la sesión y si utiliza la cookie, se ve limitado por el tamaño del archivo y problemas de serialización.

Una solución para esto es usar el caché y asegúrese de incluir el id. De sesión del usuario en cada tecla que use. De esta forma terminarás con un almacenamiento en caché que imita la sesión en sí.

Si desea más funcionalidad y no quiere preocuparse acerca de cómo implementar esto, sin embargo se puede utilizar la API de este pequeño proyecto en CodePlex:

http://www.univar.codeplex.com

La versión 2.0 ofrece muchas opciones de tipo de almacenamiento a cabo del cuadro que incluye una caché de sesión enlazada.

6

Escribí una clase de extensión muy simple que hace eso. Puede encontrar el código fuente here

Uso:

//store and expire after 5 minutes 
Session.AddWithTimeout("key", "value", TimeSpan.FromMinutes(5)); 
0
/// <summary> 
/// this class saves something to the Session object 
/// but with an EXPIRATION TIMEOUT 
/// (just like the ASP.NET Cache) 
/// (c) Jitbit 2011. MIT license 
/// usage sample: 
/// Session.AddWithTimeout(
/// "key", 
/// "value", 
/// TimeSpan.FromMinutes(5)); 
/// </summary> 
public static class SessionExtender 
{ 
    public static void AddWithTimeout(
    this HttpSessionState session, 
    string name, 
    object value, 
    TimeSpan expireAfter) 
    { 
    session[name] = value; 
    session[name + "ExpDate"] = DateTime.Now.Add(expireAfter); 
    } 

    public static object GetWithTimeout(
    this HttpSessionState session, 
    string name) 
    { 
    object value = session[name]; 
    if (value == null) return null; 

    DateTime? expDate = session[name + "ExpDate"] as DateTime?; 
    if (expDate == null) return null; 

    if (expDate < DateTime.Now) 
    { 
     session.Remove(name); 
     session.Remove(name + "ExpDate"); 
     return null; 
    } 

    return value; 
    } 
} 
Usage: 

//store and expire after 5 minutes 
Session.AddWithTimeout("key", "value", TimeSpan.FromMinutes(5)); 

//get the stored value 
Session.GetWithTimeout("key"); 

por Alex. CEO, fundador https://www.jitbit.com/alexblog/196-aspnet-session-caching-expiring-values/

Cuestiones relacionadas