SignalR 2.2.2 Asp.Net 4.5 Web应用程序 - 无法访问Hub类中的响应对象

时间:2017-10-04 04:01:26

标签: asp.net signalr httpresponse

我正在使用SignalR 2.2.2 Asp.Net 4.5 Web应用程序。我想访问客户端调用程序的当前http响应对象,但不知道如何。如何引用响应对象?我已经尝试了Context.Request.GetHttpContext()。响应但它错误地说“它在当前上下文中不存在”。有人可以帮助并指出我正确的方向。

1 个答案:

答案 0 :(得分:1)

由于几个原因,SignalR不允许用户直接写入HttpResponse Stream,即使你找到了这样做的方法,也不是一个好主意:

  • 使用WebSockets传输时,SignalR使用webSockets发送消息,因此写入HttpResponse不起作用(并且不可能)
  • SignalR使用自己的基于JSON的协议,如果您直接写任何内容,很可能会创建客户端无法处理的无效SignalR消息

如果您想通过SignalR发送PDF,您需要能够将其保存到流(例如MemoryStream)并使用从此流创建的阵列调用客户端。 (请注意,您正在使用的SignalR版本使用基于JSON的协议,因此发送二进制数据效率非常低 - 使用SignalR让客户端知道他们可以下载PDF然后客户端会下载它可能会更好使用例如HTTP GET请求)

相关问题
最新问题