ASP.NET Core 7 Web 使用Session

ASP.NET Core 好像不能像20年前那样直接使用Session函数,我使用如下方法

1、在NuGet安装以下2个包

2、在Program.cs注册

cs 复制代码
//注册Session
builder.Services.AddSession(options =>
{
    options.IdleTimeout = TimeSpan.FromMinutes(60);
    options.Cookie.HttpOnly = false;
});
//注册上下文
builder.Services.AddHttpContextAccessor();

var app = builder.Build();

//启用Session
app.UseSession();

3、在控制器中使用

cs 复制代码
public class HomeController : Controller
{
    private readonly ILogger<HomeController> _logger;

    private readonly ISession _session; //session对象
    private readonly IHttpContextAccessor _contextAccessor; //上下文对象

    //构造函数的参数中引用IHttpContextAccessor对象
    //再把它和它的Session赋值给本控制器的_contextAccessor和_session 
    public HomeController(ILogger<HomeController> logger, IHttpContextAccessor contextAccessor)
    {
        _logger = logger;
        _contextAccessor = contextAccessor; 
        _session = contextAccessor.HttpContext.Session;
    }

    public IActionResult Index()
    {
          //然后可以使用_session来添加或者读取需要的变量
        _session.SetString("uname", "Jack");
        ViewData["uid"] = _session.GetString("uname");
        return View();
    }

}
相关推荐
楽码1 分钟前
一文看懂隐藏功能!语言的逃逸分析
后端·go·编程语言
RunsenLIu11 分钟前
基于Django实现的图书分析大屏系统项目
后端·python·django
Chandler2421 分钟前
Go:低级编程
开发语言·后端·golang
Asthenia041229 分钟前
ArrayList与CopyOnWriteArrayList源码深度解析及面试拷打
后端
Asthenia041229 分钟前
深入解析String、StringBuilder、StringBuffer与final修饰对象的问题
后端
Asthenia041232 分钟前
Java数据类型的四类八种与拆装箱底层原理
后端
郭萌6961 小时前
Docker 安装陀螺匠教程
后端
u0103731061 小时前
Django REST Framework (DRF)
后端·python·django
牛马喜喜1 小时前
sequelize的进阶使用(助力成为优秀全栈)
后端·node.js
勇敢牛牛_1 小时前
【Rust基础】使用Rocket构建基于SSE的流式回复
开发语言·后端·rust