asp.net-core - 如何在 HubConnection SignalR Core 2.1 中发送参数/查询

标签 asp.net-core signalr asp.net-core-2.1 signalr-hub

我正在尝试将参数发送到 signalr 的连接

Connection = new HubConnectionBuilder()
                .WithUrl("https://familyapp.azurewebsites.net/StoreHub?token=123")
                .Build();

            await Connection.StartAsync();

在我的服务器端,我从 HttpContext 获取此参数:

 public override async Task OnConnectedAsync()
        {
            var group = Context.GetHttpContext().Request.Query["token"];

            string value = !string.IsNullOrEmpty(group.ToString()) ? group.ToString() : "default";

            await Groups.AddToGroupAsync(Context.ConnectionId, value);
            await base.OnConnectedAsync();              
        }

但是 GetHttpContext ().Request.Query["token"] 为 null,因为组名称接收“default”,如以下代码所示

string value = !string.IsNullOrEmpty(group.ToString()) ? group.ToString() : "default";

我忘记了一个步骤吗? 我使用的是 aspnetcore 2.1

最佳答案

从您的代码中,我认为您使用了 ASP.NET Core SignalR .NET 客户端库。这是一个基于您的代码在控制台应用程序中使用 .net 客户端的工作演示。

控制台应用

1.从管理 NuGet 包安装版本 3.1.3 的客户端库 Microsoft.AspNetCore.SignalR.Client

2.连接集线器

var connection = new HubConnectionBuilder()
            .WithUrl("http://localhost:5000/chatHub?token=123")
            .Build();

await connection.StartAsync();

SignalR 集线器侧

您可以引用this article设置您的 SignalR 集线器。

1.设置SignalR路由

app.UseSignalR(routes =>
 {
    routes.MapHub<ChatHub>("/chatHub");
 });

2.Hub类:

public class ChatHub:Hub
{
    public async Task SendMessage(string user, string message)
    {
        await Clients.All.SendAsync("ReceiveMessage", user, message);
    }

    public override async Task OnConnectedAsync()
    {
        var group = Context.GetHttpContext().Request.Query["token"];

        string value = !string.IsNullOrEmpty(group.ToString()) ? group.ToString() : "default";

        await Groups.AddToGroupAsync(Context.ConnectionId, value);
        await base.OnConnectedAsync();
    }
}

这是我的 demo link ,你可以引用一下。

关于asp.net-core - 如何在 HubConnection SignalR Core 2.1 中发送参数/查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61232651/

相关文章:

azure - ASP.NET Core Docker 容器内的 Nginx

asp.net - 如何从ASP.NET Core Web API中删除重定向并返回HTTP 401?

c# - 在 AWS CDK 中使用常量 JSON 参数创建规则 (C#)

cordova - 使用 Edge(使用 Cordova)、signalr 和 OWIN self 主机建立 HTTPS 连接的问题

c# - 如何在同一网址上使用 [FromBody] 和 [FromForm]?

c# - 如何在 ASP.NET Core 中转换 AppSettings

git - 在文件更改时重建 Docker 容器

Azure SignalR AccessToken 非常大

javascript - jQuery 的 signalR 选择性模块?

asp.net-core - 如何用 Razor Pages 路由替换 MVC HomeController/Index 重定向?