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();
    }

}
相关推荐
小马爱打代码9 小时前
Spring Boot:第三方 API 调用的企业级容错设计
java·spring boot·后端
_叶小格_9 小时前
cp、scp、rsync命令详解
linux·运维·服务器·ubuntu·centos·运维开发
凯子坚持 c10 小时前
Qt常用控件指南(7)
服务器·数据库·qt
mango_mangojuice10 小时前
Linux学习笔记 1.19
linux·服务器·数据库·笔记·学习
i建模10 小时前
linux断点续传下载文件
linux·运维·服务器
csdn2015_10 小时前
springboot task
java·spring boot·后端
执笔论英雄10 小时前
【RL]分离部署与共置模式详解
服务器·网络·windows
czlczl2002092510 小时前
Spring Boot :如何高性能地在 Filter 中获取响应体(Response Body)
java·spring boot·后端
拍客圈10 小时前
Discuz CC 防护规则
服务器·网络·安全
闫记康11 小时前
linux配置ssh
linux·运维·服务器·学习·ssh