升级 ASP.NET 应用程序以使用启用了 WebSocket 协议(protocol)的 SignalR 时遇到问题。在此之前,仅使用 SignalR,我就可以在启用 websocket 协议(protocol)之前设置和添加响应 cookie。我现在注意到,在使用 HttpContext 中的 HttpResponse 和 GetHttpContext 中的 HttpResponseBase 进行调试时,我要么得到 p>
Response is not available in this context
或
threw an exception of type System.Web.HttpException
Context.Request.GetHttpContext().Response
HttpContext.Current.Response.Cookies
有趣的是,对上下文的请求仍然存在并且不会给我带来任何问题。此外,这发生在 SignalR HUB 类中。任何帮助将不胜感激。
最佳答案
原因是 SignalR 的底层技术与 MVC 不同 - 无法设置 cookie(cookie 是在 HTTP 响应中设置的,但使用 Web 套接字时没有这样的东西)。
所以,基本上你做不到。但是,您可以使用集线器的上下文读取 cookie(无论如何初始化 websocket 连接时的 cookie...)。
关于C# SignalR GetHttpContext/HttpContext 响应不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50234562/