ASP.NET estado de la sesión y múltiples procesos de trabajo


Necesito entender algo sobre ASP.NET estado de la sesión, tal como se aplica a IIS 7 y ASP.net 3.5.

Si una aplicación está configurada para usar el estado de sesión en el proceso, ¿funcionará bien si hay varios procesos de trabajo? En otras palabras, ¿los procesos de trabajo comparten el estado de la sesión?

La configuración predeterminada para IIS 7 es usar el estado de sesión en el proceso y asignar un máximo de 10 procesos de trabajo. Parece probable entonces, que esta configuración por defecto debe trabajo. Estoy tratando con una empresa que ha producido un ASP.NET MVC web app que está teniendo algunos problemas, están culpando al entorno del servidor. La afirmación es que debido a que estoy utilizando la configuración predeterminada de 10 procesos de trabajo, que está rompiendo su estado de sesión. Necesito saber si esto es en realidad una afirmación exacta. Nunca he conocido un ASP.NET aplicación para no funcionar con la configuración predeterminada, así que estoy un poco confundido y necesito tener esto aclarado.

Author: Tim Long, 2010-01-27

4 answers

Tener múltiples procesos de trabajo y usar InProc no parece ser compatible.

Ver esto :

Si habilita el modo Web-garden estableciendo el atributo webGarden en true en el elemento processModel de la Web de la aplicación.archivo de configuración, no utilice el modo de estado de sesión InProc. Si lo hace, la pérdida de datos puede ocurrir si diferentes procesos de trabajo sirven diferentes solicitudes para la misma sesión.

 24
Author: Michael Krauklis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-27 14:42:07

Más de un proceso de trabajo es un "jardín web."El estado de la sesión en proceso no funcionará correctamente. Deberá utilizar un único proceso de trabajo para su aplicación web o un servidor de estado de sesión o SQL Server para el estado de sesión.

 8
Author: TheObjectGuy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-27 14:42:44

Puedo estar equivocado, pero por lo que sé, por defecto solo tiene 1 proceso de trabajo 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 del proceso.

Creo que tener más de 1 proceso de trabajo en ASP.NET se refiere a modo de jardín web que usted tiene que habilitar específicamente y si lo hace, entonces usted necesita fuera de la gestión del estado de proceso. Vea el cuadro de comentarios en esta páginabajo el encabezado Modo en proceso.

 5
Author: Mike Dinescu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-27 14:38:22

Experimenté un problema de pérdida de sesión y finalmente luché para encontrar la causa raíz.

Recientemente recibí varios errores reprot sobre la sesión perdida. Si la carga del sitio web es baja, todo está bien. Si la carga del sitio web es alta, se produce el problema de pérdida de sesión. Esto es muy raro.

La causa raíz está entre la configuración del proceso de trabajo y el estado de la sesión. Aquí tenemos 5 procesos de trabajo, lo que significa que tendrá 5 procesos independientes que se ejecutan cuando la carga del sitio web es alta. Mientras que el la sesión se almacena en proceso, IIS no puede garantizar que un usuario cliente use el mismo proceso de trabajo. Por ejemplo, el cliente usuario utiliza el Proceso A cuando visita por primera vez la web, y cuando visita por segunda vez la web, puede utilizar el Proceso B. No hay sesión almacenada en el Proceso B, por lo que su sesión se pierde.

¿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. Por lo tanto, el problema de pérdida de sesión no sucederá. Esto explica por qué está bien cuando implemente una nueva versión y pruébela bien por la noche, pero el error vuelve a ocurrir mañana por la mañana. Debido a que la carga del sitio web es baja por la noche.

Tenga cuidado de usar el estado de sesión en Proceso, es inestable cuando la carga de su sitio web será alta y teniendo en cuenta los procesos de trabajo mutiple. Pruebe algo como State Serversession state.

 0
Author: Robin Sun,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-26 07:52:21