我正在尝试将参数发送到 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/