AspNetCoreSignalR,无法读取标头和HttpContext
创始人
2024-09-20 09:00:53
0

在SignalR的Startup中启用UseHttpContext以便访问HttpContext。

在Startup.cs的ConfigureServices方法中添加以下代码:

services.AddSignalR() .AddJsonProtocol(options => { options.PayloadSerializerOptions.PropertyNamingPolicy = null; }) .AddHubOptions(options => { options.EnableDetailedErrors = true; }); services.AddSingleton();

并且在Configure方法中添加以下代码:

app.UseRouting(); app.UseAuthentication(); app.UseAuthorization();

app.UseEndpoints(endpoints => { endpoints.MapControllers(); endpoints.MapHub("/myhub") .RequireAuthorization(); });

在MyHub.cs中可以访问HttpContext,可以通过以下代码进行访问:

using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.SignalR;

namespace My.Namespace { [Authorize] public class MyHub : Hub { private readonly IHttpContextAccessor _httpContextAccessor;

    public MyHub(IHttpContextAccessor httpContextAccessor)
    {
        _httpContextAccessor = httpContextAccessor;
    }

    public async Task SendMessage(string message)
    {
        var httpContext = _httpContextAccessor.HttpContext;
        var username = httpContext.User.Identity.Name;

        await Clients.All.SendAsync("ReceiveMessage", username, message);
    }
}

}

在上面的示例中,MyHub使用IHttpContextAccessor作为依赖注入进行构造,并在SendMessage方法中访问了HttpContext以获取用户信息。

相关内容

热门资讯

最初有开挂"决战十水... 最初有开挂"决战十水三辅助"开挂(透视)辅助脚本(线上教程有挂方式);无需打开直接搜索加(薇:136...
素来有开挂"aapo... 素来有开挂"aapoker辅助怎么用"开挂(透视)辅助平台(曝光教程有挂秘笈)您好:aapoker辅...
原先有开挂"拱趴大菠... 拱趴大菠萝如何会赢是一款专注玩家量身打造的游戏记牌类型软件,在拱趴大菠萝如何会赢这款游戏中我们可以记...
起初有辅助"微信小程... 起初有辅助"微信小程序怎么挂脚本"开挂(透视)辅助插件(爆料教程有挂教程)这是一款可以让一直输的玩家...
最初有开挂"长春科乐... 最初有开挂"长春科乐天天踢辅助"开挂(透视)辅助下载(揭秘教程有挂攻略);无需打开直接搜索微信(13...
从来有辅助"神殿娱乐... 从来有辅助"神殿娱乐控制系统"开挂(透视)辅助软件(解密教程有挂分析);无需打开直接搜索加(薇:13...
原本有开挂"广西友玩... 广西友玩修改器是一款可以让一直输的玩家,快速成为一个“必胜”的ai辅助神器,有需要的用户可以加我微信...
从前有开挂"四川途游... 从前有开挂"四川途游辅助软件瞎子啊"开挂(透视)辅助工具(插件教程真的有挂);亲,四川途游辅助软件瞎...
先前有开挂"杭州都莱... >>您好:杭州都莱有没有挂确实是有挂的,很多玩家在这款杭州都莱有没有挂游戏中打牌都会发现很多用户的牌...
固有有开挂"哈局八张... 哈局八张开挂 无需打开直接搜索微信:136704302本司针对手游进行,选择我们的四大理由: 1、软...