asp.net - que - cerrar sesion por inactividad c#
Estado de la sesión ASP.NET y múltiples procesos de trabajo. (4)
Experimenté el problema de la sesión perdida y finalmente tuve problemas para encontrar la causa raíz.
Recientemente recibí varios errores repitiendo sobre la sesión perdida. Si la carga del sitio web es baja, todo está bien. Si la carga del sitio web es alta, el problema de la sesión perdida ocurre. Esto es muy raro.
La causa raíz se encuentra entre la configuración del proceso de trabajo y el estado de sesión. Aquí tenemos 5 procesos de trabajo, lo que significa que habrá 5 procesos independientes en ejecución cuando la carga del sitio web sea alta. Mientras la sesión se almacena en el proceso, IIS no puede garantizar que un usuario cliente utilizará el mismo proceso de trabajo. Por ejemplo, el cliente usuario utiliza el Proceso A cuando visita la web por primera vez, y cuando visita la Web por segunda vez, puede usar el Proceso B. No hay sesión almacenada en el Proceso B, por lo que se pierde su sesión.
¿Por qué está bien cuando la carga del sitio web es baja? Porque IIS solo configurará un proceso de trabajo cuando la carga sea baja. Así que la sesión perdida no pasará problema. Esto explica por qué está bien cuando implemento una nueva versión y la pruebo por la noche, pero el error vuelve a ocurrir mañana por la mañana. Porque la carga del sitio web es baja por la noche.
Tenga cuidado al usar el estado de la sesión en Proceso, es inestable cuando la carga de su sitio web será alta y se considerará con varios procesos de trabajo. Intente algo como el estado de la administración del estado.
Necesito entender algo sobre el estado de sesión de ASP.NET, ya que se aplica a IIS 7 y ASP.net 3.5.
Si una aplicación está configurada para usar el estado de sesión en proceso, ¿funcionará bien si hay varios procesos de trabajo? En otras palabras, ¿los procesos de los trabajadores comparten el estado de la sesión?
La configuración predeterminada para IIS 7 es utilizar el estado de sesión en proceso y asignar un máximo de 10 procesos de trabajo. Parecería probable entonces, que esta configuración por defecto debería funcionar. Estoy tratando con una empresa que ha producido una aplicación web ASP.NET MVC que está teniendo algunos problemas, están culpando al entorno del servidor. La afirmación es que debido a que estoy usando la configuración predeterminada de 10 procesos de trabajo, eso está rompiendo su estado de sesión. Necesito saber si esto es en realidad una afirmación precisa. Nunca he conocido una aplicación ASP.NET que no funcione con la configuración predeterminada, por lo que estoy un poco confundido y necesito aclararlo.
Más de un proceso de trabajo es un "jardín web". El estado de la sesión en proceso no funcionará correctamente. Deberá usar un solo proceso de trabajo para su aplicación web, o usar un servidor de estado de sesión o SQL Server para el estado de sesión.
Puede que esté equivocado, pero que yo sepa, de manera predeterminada, solo tiene 1 proceso de trabajador por dominio de aplicación con múltiples subprocesos de trabajo para manejar las solicitudes. En este caso, el estado de la sesión In-Proc debería funcionar bien (la configuración predeterminada).
Pero si tiene varios procesos de trabajo (no solo subprocesos de trabajo, procesos de trabajo reales) necesita estar fuera del estado de sesión de proceso.
Creo que tener más de 1 proceso de trabajo en ASP.NET se refiere al modo de jardín web que tiene que habilitar específicamente y, si lo hace, entonces necesita la administración fuera del proceso de estado. Vea el cuadro de comentarios en esta página bajo el encabezado del Modo en proceso .
Tener varios procesos de trabajo y usar InProc no parece ser compatible.
Ver this
Si habilita el modo de jardín web estableciendo el atributo webGarden en verdadero en el elemento processModel del archivo Web.config de la aplicación, no use el modo de estado de sesión InProc. Si lo hace, la pérdida de datos puede ocurrir si diferentes procesos de trabajo atienden solicitudes diferentes para la misma sesión.