httpcontext - ihttpcontextaccessor.httpcontext.user.findfirst(claimtypes.nameidentifier).value 为空
问题描述
我有这样的服务:
public class CurentUserService : ICurentUserService
{
private readonly IHttpContextAccessor _httpContextAccessor;
public string UserId { get; set; }
public CurentUserService(IHttpContextAccessor httpContextAccessor)
{
this._httpContextAccessor = httpContextAccessor;
this.UserId = this._httpContextAccessor.HttpContext?.User?.FindFirstValue(ClaimTypes.NameIdentifier);
}
我添加到启动
services.AddScoped<ICurentUserService, CurentUserService>();
//services.AddHttpContextAccessor();
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
但是当我登录时,通过依赖注入使用的 à 始终为空。
我使用 asp.net 核心版本 3.1.0
谢谢你的帮助。
解决方案
无法解释原因,但此代码有效
private readonly IHttpContextAccessor _httpContextAccessor;
public CurrentUserService(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}
public string UserId => _httpContextAccessor.HttpContext?.User?.FindFirstValue(ClaimTypes.NameIdentifier);
在启动中
services.AddSingleton<ICurrentUserService, CurrentUserService>();
services.AddHttpContextAccessor();
推荐阅读
- r - 在给定过滤条件的情况下按 R 中的列更新第一行的列值
- django - 有没有办法将 Django 与 Next.js 集成?
- excel - SoftArtisans 错误:无法解析公式:无法在函数表中找到函数“IFERROR”
- javascript - 如何使用jquery在单击按钮时隐藏数据库记录
- solr - Solr 的香蕉仪表板未正确标记位置名称
- php - 如何让数量下拉列表中的占位符显示独特的东西?
- c# - UWP。如何找到已经配对但现在处于可发现模式的设备?
- c# - 有没有办法在属性内使用方法
- c# - 如何从 mvc 控制器中的 Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable 获取值
- ios - 使用内核编写纹理