如何读取集线器 SignalR ASP.NET Core 2.1 中的 headers 数据

How to read headers data in hub SignalR ASP.NET Core 2.1

我正在尝试将 userId 传递给连接到 signalR 的集线器。这是客户端建立连接的方式:

         connection = new HubConnectionBuilder()
            .WithUrl("http://localhost:56587/hub", options =>
            {
                options.Headers["UserId"] = loginTextBox.Text;
            })
            .AddMessagePackProtocol()
            .Build();

如何在集线器的 OnConnectedAsync() 方法中读取此 header?

获取 Header 字符串形式的值:

public override async Task OnConnectedAsync()
{
    var httpCtx = Context.GetHttpContext();
    var someHeaderValue = httpCtx.Request.Headers["UserId"].ToString();
}

注意 - 您可能需要考虑在查询字符串中传递信息,但并非所有传输都支持 headers.