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);
我正在将 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);