asp.net-mvc - password - forms asp net core
Especificando la sesiĆ³n de solo lectura en ASP.NET MVC (4)
¿Hay alguna manera de especificar que un Controlador o Acción determinado usa el estado de sesión de forma solo de lectura? En "antiguo" ASP.NET solíamos hacer algo como esto:
<%@ Page EnableSessionState="ReadOnly" %>
¿Hay un ASP.NET MVC equivalente? Estoy buscando permitir que mi aplicación sirva múltiples solicitudes del mismo cliente simultáneamente, y desactivar la sesión por completo es -no- una opción en mi caso.
¿Qué pasa si configura los datos que desea que sean "Solo lectura" como estáticos en su Modelo? De esta forma, podría tener solicitudes simultáneas a MVC con los mismos datos.
Aquí se hizo una pregunta similar: Deshabilitar estado de sesión por solicitud en ASP.Net MVC
La respuesta aceptada se refiere a la creación de un manejador de ruta personalizado que finalmente omite el enlace a la sesión. Esto no responde exactamente a su pregunta (que es cómo declarar varias acciones para usar el acceso de sesión de solo lectura), pero parecía lo suficientemente relevante como para mencionarlo.
En Asp.Net MVC3 ahora hay un SessionStateAttribute
que puede decorar su Controlador para forzar todas las acciones en Read-Write, Read-only o No session mode.
http://msdn.microsoft.com/en-us/library/system.web.mvc.sessionstateattribute(v=VS.98).aspx
Esto podría ser un poco complicado: mi entendimiento es que configurar el estado de la sesión es algo que ocurrió en el nivel de IHttpHandler. Con los controladores personalizados, puede especificar el estado de la sesión mediante el uso de interfaces de marcador, como IReadOnlySessionState para declarar que solo necesita el estado de sesión de solo lectura. Podría intentar agregar eso a su controlador y ver cómo vuela. Sospecho que no lo hará porque los controladores de mvc de ASP.NET suceden mucho después de que IHttpHandler está conectado, pero vale la pena intentarlo.
Otra solución podría ser ajustar las variables de estado de la sesión en su propia clase, y exponer una versión de solo lectura para exigir solo lectura. Acceder a él a través de múltiples solicitudes no debería ser un problema, pero está en lo cierto de que puede obtener condiciones de carrera y eso si comienza a tratar de escribir en las mismas variables de sesión desde múltiples ángulos.