[英]Asp.Net core 6 session keys
我让我的项目在 .NET 框架 4.8 上运行,然后将其迁移到 .NET 6。每当我需要从 Session 访问特定属性时,我都会使用:
public static bool SIMInside
{
get
{
return (bool)HttpContext.Current.Session["SIMInside"];
}
set
{
HttpContext.Current.Session["SIMInside"] = value;
}
}
如何在 Asp.Net core 6 中实现这一点? 我知道我需要添加builder.Services.AddHttpContextAccessor();
在Program.cs
中,然后注入到所需的位置。 我试过但无济于事:
public static bool SIMInside
{
get
{
return _contextAccessor.HttpContext.Session.Get("SIMInside");
}
set
{
_contextAccessor.HttpContext.Session.Set("SIMInside", value);
}
}
在这种情况下,这里Get
返回byte[]
数组或Set
也需要byte[]
数组
与经典 ASP.NET 应用程序相比,ASP.NET Core 使用会话的方式不同。
不幸的是,您不能再在其中存储复杂的对象。 为了存储对象,它被转换为 JSON 并存储为字符串。 稍后,将其作为字符串检索并反序列化为原始对象。
在您的情况下,您可以使用SetInt32 and GetInt32
存储和检索 1 为真,0 为假,然后解析该值。
Convert.ToBoolean(session.GetInt32(“SIMInside”));
session.SetInt32(“SIMInside”, Convert.ToInt32(value));
不要忘记启用app.UseSession();
能够使用会话。
我发现这个关于 Net6 会话的非常有用的视频,我认为它会帮助你和其他任何人解决这个问题,我有自己
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.