You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET7中GuildService的IHttpContextAccessor返回null问题解决

.NET7中HttpContextAccessor在服务中返回Null的问题排查与解决

问题场景

在.NET7项目中,尝试通过HttpContextAccessor从请求头的Token中获取用户ID,已在Program.cs中完成服务注册:

builder.Services.AddScoped<IWardrobeService, WardobreService>();
builder.Services.AddScoped<IGuildService, GuildService>();
builder.Services.AddHttpContextAccessor();

出现的异常情况:

  • WardrobeService中可正常通过HttpContextAccessor获取用户ID
  • GuildService中调用GetCurrentCharacter()时,_httpContext.HttpContext始终返回Null,导致GetCurrentUserId()报错
  • 尝试过重写GuildService、在GuildService中调用WardrobeService,均无法解决问题

问题原因与解决

问题已解决,核心原因是:调用GuildService的控制器未添加[Authorize]特性,而调用WardrobeService的控制器已添加该特性。

当控制器未标记[Authorize]时,请求不会经过认证中间件处理,此时HttpContext中不会初始化用户相关的上下文信息,HttpContextAccessor也就无法获取到有效的HttpContext实例。给对应控制器添加[Authorize]特性后,请求经过认证流程,HttpContext即可正常被访问。

内容的提问来源于stack exchange,提问作者Pedroock

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 12:07:02