ASP.NET 核心 MVC 中的会话

Session in ASP.NET Core MVC

我正在将 ASP.NET MVC 应用程序迁移到 ASP.NET 核心 MVC。

在 ASP.NET MVC 中,我使用一些 Session 变量来存储或获取值,例如:

Session["UserID"] = user.UserName;
Session["Role"] = role[0].ROLE_DESCRIPTION;
ViewData["LEVEL"] = Session["LEVEL"];

但是转换后出现错误:

The name 'Session' does not exist in the current context

此外,我还需要在 .cshtml 文件中对此进行替换:

var UserName = "@Session["Name"]";

ASP.NETCore MVC 中是否有任何其他方法可以在不改变行为的情况下存储或获取这些变量的值?

您需要在配置文件中添加会话中间件

public void ConfigureServices(IServiceCollection services)  
{  
     //........
    services.AddDistributedMemoryCache();  
    services.AddSession(options => {  
        options.IdleTimeout = TimeSpan.FromMinutes(1);//You can set Time   
    });  
    services.AddMvc();  
} 

public void ConfigureServices(IServiceCollection services)
{
    //......
    app.UseSession();
    //......
}

然后在你的控制器中,你可以

//set session 

HttpContext.Session.SetString(SessionName, "Jarvik");  
HttpContext.Session.SetInt32(SessionAge, 24);

//get session

ViewBag.Name = HttpContext.Session.GetString(SessionName);  
ViewBag.Age = HttpContext.Session.GetInt32(SessionAge);