Tengo una aplicación que tiene algunas acciones de controlador llamando a servicios web de terceros lentos. Estas acciones se llaman usando llamadas AJAX desde la página.ASP.NET MVC: ¿cómo prevenir un bloqueo de sesión?
Puedo usar controladores asíncronos para liberar el grupo de subprocesos de ASP.NET, eso es genial. ¿Pero qué hay de la sesión? Si uso la sesión InProc y una solicitud para "acción lenta", el usuario particular no puede realizar ninguna solicitud a la aplicación porque su sesión está bloqueada por la primera llamada "lenta".
En PHP no es un método session_write_close()
que puedo utilizar de la siguiente manera:
- aceptar la petición del usuario para frenar la acción
- Verificar derechos del usuario de acceder al controlador/acción basado en datos de la sesión
- Escriba algo en la sesión si es necesario
- Llame al
session_write_close()
. De esta sesión punto está cerrado por esta solicitud y cualquier otra solicitud del mismo usuario puede acceder a él - Hacer mi llamada lenta (tal vez de alguna manera asíncrona)
Sé que puedo deshabilitar el estado de sesión en el nivel del controlador usando el atributo [SessionState]
, pero esa no es la solución.
¿Alguna idea?
¿Por qué cree que la sesión está "bloqueado" por ¿cualquier solicitud? –
Aquí están los detalles: http://stackoverflow.com/questions/3666556/a-non-locking-in-process-asp-net-session-state-store y aquí otra mi pregunta sobre el tema similar: http: // stackoverflow.com/questions/2438493/the-whole-site-is-blocked-while-one-page-is- waiting-for -blocking-operation-php – artvolk
Aquí está una última descripción: http://stackoverflow.com/ preguntas/3629709/i-just-discovered-why-all-asp-net-websites-are-slow-and-i-am-trying-to-work-out – artvolk