繁体   English   中英

Asp.Net core 6 会话密钥

[英]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(); 能够使用会话。

https://youtu.be/e7UBAe0-KY8

我发现这个关于 Net6 会话的非常有用的视频,我认为它会帮助你和其他任何人解决这个问题,我有自己

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM