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

ASP.NET Core MVC控制器中Session不存在的问题求助

解决ASP.NET Core MVC中Session“当前上下文不存在”的问题

检查Program.cs的配置顺序和完整性

Session中间件的顺序非常关键,必须放在路由和MVC中间件之前,且要先注册服务再添加中间件:

  1. 先注册Session服务:
builder.Services.AddSession(options =>
{
    options.IdleTimeout = TimeSpan.FromMinutes(30); // 设置会话超时时间
    options.Cookie.HttpOnly = true;
    options.Cookie.IsEssential = true;
});
  1. 添加Session中间件(必须在app.UseRouting()之后,app.UseAuthorization()和app.MapControllerRoute()之前):
app.UseSession();

控制器中正确使用Session

在控制器中,需通过HttpContext.Session访问会话对象(若控制器继承自Controller基类,也可直接使用Session属性,若仍报错优先用HttpContext.Session确保正确性):
示例代码:

// 检查用户登录状态
if (HttpContext.Session.GetString("UserName") == null)
{
    return RedirectToAction("Login", "Account");
}
// 设置会话值
HttpContext.Session.SetString("UserName", "testUser");

其他排查点

  • 确保控制器继承自Microsoft.AspNetCore.Mvc.Controller基类,而非ControllerBase(ControllerBase是API控制器专用,无Session属性)
  • 确认项目已引用Microsoft.AspNetCore.Session NuGet包(ASP.NET Core 3.0+通常默认包含,手动创建的项目可能需手动安装)

内容的提问来源于stack exchange,提问作者Shaik Abid Hussain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 00:43:11