如何在 .net 客户端添加 SignalR 请求 Headers

How to add SignalR request Headers on .net client side

我有服务器端集线器,代码如下:

        private string GetUserPhoneFromContext()
        {
            var httpCtx = Context.GetHttpContext();
            return httpCtx.Request.Headers["userPhone"].ToString();
        }

提到上面的代码我无法更改它适用于带有 flutter 客户端的产品。 我正在开发 blazor wasm 客户端,在客户端我想添加 headers 如下:

 hubConnection = new HubConnectionBuilder()
                .WithUrl($"{Uri}?userPhone={Phone}", options =>
                {
                    options.Headers.Add("userPhone", Phone);                    
                })
                .WithAutomaticReconnect()
                .Build();

但也不是通过 options.Header.Add() 既不是通过添加查询字符串参数我也无法通过 GetUserPhoneFromContext 方法在服务器端读取 header,我总是得到空字符串而不是在客户端 userPhone 上添加header。不清楚为什么它适用于 flutter 客户端但不适用于 .net blazor wasm

找到根源了。 Blazor WASM SignalR 实现是不支持 Headers 的 JS 实现的包装器。如果您需要其他数据,请使用 QueryString

查看https://github.com/dotnet/aspnetcore/issues/18694了解更多