如何在集线器SignalR ASP.NET Core 2.1中读取标头数据

Pea*_*ace 4 header asp.net-web-api signalr-hub asp.net-core asp.net-core-signalr

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

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

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

ttu*_*tes 6

要获得标题值作为字符串:

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

–您可能要考虑在查询字符串中传递信息,因为并非所有传输都支持标头。

  • 这在 SignalR Core 3.0 中不再可能 (4认同)