如何通过.net core 2.0应用程序中的signalR头或查询字符串传递一些数据

问题描述:

在.net 4.7中使用signalR我们能够将两个变量从客户端应用程序传递到signalR服务器。以下是代码片段:如何通过.net core 2.0应用程序中的signalR头或查询字符串传递一些数据

public class MyHub : Hub 
{ 
    protected (string myVar1, string myVar2) GetValues() => 
      (
      Context.QueryString["MyVariable1"] ?? string.Empty, 
      Context.QueryString["MyVariable2"] ?? string.Empty, 
      ); 
} 

JavaScript客户端将如下设置这些变量:

$.connection.hub.qs = {'MyVariable1' : 'val1', 'MyVariable2' : 'val2'}; 

现在,我们正试图迁移到signalR的alpha版本的.NET 2.0的核心应用。阻止程序是我们不能再使用此方法来获取myVar1和myVar2值。不仅QueryString不可用,而且还有标题。什么是最好的方法来克服这种情况,以便能够将来自客户端应用程序(Typescript)或甚至.net核心应用程序的变量传递给signalR服务器端? 另外 - 你如何在客户端设置变量?

您可以访问HttpContext在集线器这样的:

var httpContext = Context.Connection.GetHttpContext(); 

,然后用httpContext.Request.Query["MyVariable"]

+0

注意获取变量值给别人:这是一个扩展方法,所以你不会看到它列出,直到包含Microsoft.AspNetCore.SignalR命名空间。 –

+0

嗨,你可以举一些例子来插入参数与C#连接? 我使用HubConnectionBuilder创建并启动我的连接。 –

+0

只需将参数附加到您传递的查询字符串以开始连接? – Pawel