es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

ASP .NET MVC Core + SignalR: Redireccionar desde un Hub a un Controlador

Pregunta

¿Es posible redirigir a un usuario desde un Hub de SignalR Core a cualquier otra ubicación dentro de mi aplicación?

Intenté utilizar GetHttpContext y luego invocar Response.Redirect, pero obtengo una excepción informando que la Response ya se ha iniciado.

Más contexto

Utilizo MVC en mi aplicación para obtener un controlador simple para el enrutamiento y para utilizar la autenticación basada en cookies de MVC. Luego, después de una autenticación exitosa, mi controlador redirige al usuario a una ubicación gobernada por un Hub de SignalR. Sin embargo, noté que en algunas situaciones necesito devolver al usuario a la página de inicio de sesión según la información en mi Hub.

¿Tiene sentido o tal vez cometí un error al diseñar mi aplicación y ahora necesito replantearla?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible redirigir a un usuario desde un centro de SignalR Core a cualquier otra ubicación dentro de su aplicación. Sin embargo, el uso de Response.Redirect dentro de un centro de SignalR puede no funcionar como se espera porque la Response ya ha sido iniciada por el pipeline de SignalR.

    Un enfoque alternativo sería que el centro de SignalR genere un evento al que el controlador de MVC se suscribe, y luego el controlador realiza la redirección. De esta manera, la redirección se puede realizar dentro del pipeline de MVC, lo cual no debería tener conflictos con el pipeline de SignalR. Otra opción sería utilizar JavaScript en el lado del cliente para manejar la redirección.

    En cuanto al diseño de su aplicación, puede valer la pena considerar si la redirección basada en información en el centro de SignalR es el enfoque más apropiado. Puede ser mejor realizar cualquier verificación necesaria y redireccionamientos dentro del pipeline de MVC antes de que el usuario llegue al centro de SignalR.

Comments are closed.