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

ASP.NET Core 7中Session数据始终为Null的问题求助

问题诊断与解决方案

你的问题核心是Session中间件的注册顺序错误,导致跨请求时无法读取到Session数据。

问题原因

在ASP.NET Core中,中间件的执行顺序严格遵循注册顺序。你当前的代码里app.UseSession()放在了app.UseAuthorization()之后,这会导致Session的初始化逻辑晚于授权逻辑,Session Cookie无法被正确关联到后续请求,最终跨请求读取Session时返回空值。

修正步骤

1. 调整中间件顺序

修改Program.cs中的中间件注册代码,将app.UseSession()移到app.UseAuthorization()之前:

app.UseRouting();
app.UseSession();
app.UseAuthorization();
app.MapControllers();

注:UseRouting是路由匹配的基础,如果你的代码里原本没有,需要补充加上。

2. 额外排查点

如果调整顺序后仍有问题,可以检查以下两点:

  • User类的序列化兼容性:确保User类拥有公共无参构造函数,且需要序列化的属性均为public修饰,否则JsonSerializer可能无法完成正确的序列化/反序列化操作。
  • 前端请求的Cookie携带:如果是前端页面调用API,需确保请求时携带Session Cookie。比如Axios要设置withCredentials: true,Fetch要设置credentials: 'include';若为跨域场景,后端还需配置CORS允许携带凭证。

验证

调整完成后重启服务,登录成功后调用welcome接口,即可正常读取Session中存储的User对象。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 03:52:37