2012-09-04 17 views
6

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:

  1. aceptar la petición del usuario para frenar la acción
  2. Verificar derechos del usuario de acceder al controlador/acción basado en datos de la sesión
  3. Escriba algo en la sesión si es necesario
  4. 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
  5. 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?

+0

¿Por qué cree que la sesión está "bloqueado" por ¿cualquier solicitud? –

+0

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

+0

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

Respuesta

0

Creo que podría haber varios escenarios.

1) hacer cambios en la fábrica de control y cambiarlo para producir contorllers sin sesión, o con alguna implementación sesión de atención al cliente al

2) tratar de leer este article about sessionless controllers

+0

La implementación de la sesión de cambio no parece ser una buena idea, sin sesiones Controlers se mencionan en mi pregunta. Aquí hay una implementación "por acción": http://sapoval.org/per-action-custom-sessionstateattribute – artvolk

Cuestiones relacionadas