2012-02-06 5 views
9

Actualmente estoy implementando mi proveedor de sesión propia , y me gustaría saber si el valor predeterminado de 20 minutos se establece en el proveedor de sesión si no existe una entrada en el archivo de configuración o si se supone que mi proveedor de sesión es de otro lugar¿Cómo obtener el valor de tiempo de espera de sesión en un proveedor de sesión cuando no está configurado en la configuración?

+0

Si va a implementar su propio proveedor de la sesión, se debe considerar que hay que buscar en el archivo de configuración para ver si hay alguna configuración para el proveedor predeterminado. Sin embargo, debe buscar en su propia configuración (para su proveedor de sesión) para averiguar el tiempo de espera para su implementación. – Peter

+0

Lo consideré, pero quiero saber si los 20 minutos son detalles de implementación en el proveedor de sesión predeterminado o si están disponibles en otro sitio. –

Respuesta

15

No pude encontrar el valor en un archivo de configuración global, pero está definido en alguna parte.

Utilizando el siguiente código, puede obtener el valor de tiempo de espera de la sesión, esté o no definido en su web.config local.

Configuration conf = WebConfigurationManager.OpenWebConfiguration(System.Web.Hosting.HostingEnvironment.ApplicationVirtualPath); 
SessionStateSection section = (SessionStateSection) conf.GetSection("system.web/sessionState"); 
int timeout = (int) section.Timeout.TotalMinutes; 
0

http://msdn.microsoft.com/en-us/library/aa478952.aspx

De acuerdo con el artículo que he vinculado anteriormente, si el valor de tiempo de espera no se establece ninguna parte, se utilizará un valor predeterminado de 20 minutos. Este parece ser el caso tanto para proveedores personalizados como integrados.

+0

Lo leo también, pero necesito el valor de Tiempo de espera actual, y 'HttpContext.Session' es' nulo'. –

+0

http://stackoverflow.com/questions/1382791/asp-net-what-to-do-if-current-session-is-null si httpcontext.session es nulo, entonces el objeto de sesión no se inicia y hay sin tiempo de espera y ninguna otra información relacionada con la sesión. –

+0

Estoy bastante seguro de que está construido ** después de llamar al proveedor de la sesión **. –

0

sólo puede utilizar Session.Timeout para obtener el valor

+0

'HttpContext.Session' es' null'. –

0

En Global.asax, se puede establecer

Session.TimeOut

en Session_Start o ponerlo en otro lugar en el código.

+0

La pregunta es sobre obtener el valor, y 'HttpContext.Session' es nulo. –

+0

¿Intentó utilizar HttpContext.Current.Session? – antar

+0

En realidad, tuve una instantánea 'HttpContext' que representaba el contexto actual. 'HttpContext.Current.Session' es por lo tanto también' null'. –

6

Intente utilizar:

System.Int64 timeout = System.Web.HttpContext.Current.Session.Timeout; // The time-out period, in minutes 
+0

esto arrojará una excepción de referencia nula cuando no tenga una sesión actual iniciada (por ejemplo, durante el inicio de la aplicación) –

Cuestiones relacionadas