我如何 pass/retreive 在 .NET Core 版本的 SignalR 中查询字符串值?

How can I pass/retreive querystring values in .NET Core version of SignalR?

我正在将现有的 .NET Framework 应用程序重写为 .NET Core 应用程序。在使用 SignalR 2.x 的旧版本中,我能够为客户端的连接设置查询字符串值:

$.connection.hub.qs = { appId: 123, instanceId: 456 };

然后在集线器本身(服务器端)中,我能够像这样检索查询字符串值:

int.TryParse(Context.QueryString["appId"]), out var appId);

但是 HubCallerContext 在 .NET Core 中不再有 QueryString NameValueConnection。我如何 set/retreive 在 .NET Core 版本的 SingalR 中查询字符串值?现在有没有更好的方法来传递特定集线器上所有方法所需的参数?

要在创建集线器连接的客户端代码中的 .NET Core 中实现此目的,您需要执行以下操作:

connection = new signalR.HubConnectionBuilder()
    .withUrl("/chatHub?appId=123")
    .withAutomaticReconnect()
    .build();

然后在您的中心逻辑中,您可以像这样检索查询字符串值:

int.TryParse(Context.GetHttpContext().Request.Query["appId"], out var appId);