C# SignalR GetHttpContext/HttpContext 响应不存在

标签 c# asp.net websocket signalr

升级 ASP.NET 应用程序以使用启用了 WebSocket 协议(protocol)的 SignalR 时遇到问题。在此之前,仅使用 SignalR,我就可以在启用 websocket 协议(protocol)之前设置和添加响应 cookie。我现在注意到,在使用 HttpContext 中的 HttpResponse 和 GetHttpContext 中的 HttpResponseBase 进行调试时,我要么得到

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/

相关文章:

c# - 如何在 Windows 时区和 IANA 时区之间进行转换?

当按下向右或向左箭头键时,C# 阻止列表框控件的默认操作

c# - 在 ASP.NET 用户控件中公开复杂属性

ios - 基于回合的游戏服务器的 websockets 和长轮询之间的区别

c# - C# 应用程序中插入语句时 MySql ODBC 5.1 驱动程序的内存分配错误

c# - 使用变量作为类实例名称 C#

c# - 如何在 Visual Studio 中查看下载包的源代码

asp.net - 无法在 IIS(Windows 10)上运行 ASP.net 服务 - 错误 404(未找到)

kubernetes - Pod注入(inject)到istio的sidecar后,websocket连接会异常中断

go - 为什么 App Engine Flexible Enviroment 不允许 WebSockets 和 HTTP/2 流量?