c# - mvc - SignalR no usa Session en el servidor
security asp net mvc (3)
Cuando intento acceder a la sesión actual de HttpContext
desde el HUB, devuelve null
.
Intenté hacer uso de la interfaz IRequiresSession
pero no funcionó. ¿Alguien me puede ayudar?
Las conexiones SignalR (incluida la conexión subyacente a todas las operaciones del concentrador para un cliente) no admiten el estado de sesión. Puede habilitarlo si lo desea, pero le recomendamos encarecidamente que no acceda, ya que el acceso al estado de la sesión serializa las solicitudes de un cliente dado, lo que significa que ya no obtendrá el beneficio de los mensajes dúplex SignalR, ya que una solicitud bloqueará la otra, por ejemplo. en el transporte de sondeo largo, la conexión de recepción bloqueará cualquier intento de envío.
Resuelvo el mismo problema con el campo oculto de la siguiente manera:
- Se agregó ASP Hiddenfield en la página aspx.
- asignó el valor de la sesión en la carga de la página (en mi caso, en el evento del cliente del botón)
- envió el valor al SignalR Hub usando $ ("FieldID"). val ()
simplemente puede mantener su propia sesión, por ejemplo, usarla en el caché de memoria, http no tiene estado, por lo que el servidor necesita una sesión para mantener a los clientes, pero el socket web es una conexión keep-alive, el servidor se mantiene conectado con los clientes, de forma predeterminada, no necesita tales cosas como HttpContext Session.