首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Asp.Net核心6会话密钥

Asp.Net核心6会话密钥
EN

Stack Overflow用户
提问于 2022-02-17 07:41:40
回答 1查看 4.6K关注 0票数 2

我的项目运行在.NET框架4.8上,然后将其迁移到.NET 6。

代码语言:javascript
运行
复制
public static bool SIMInside
        {
            get
            {
                return (bool)HttpContext.Current.Session["SIMInside"];
            }
            set
            {
                HttpContext.Current.Session["SIMInside"] = value;
            }
        }

如何在Asp.Net核心6中实现这一点?我知道我需要在builder.Services.AddHttpContextAccessor();中添加Program.cs,然后注入到所需的位置。我试过了,但没有结果:

代码语言:javascript
运行
复制
public static bool SIMInside
        {
            get
            {
                return _contextAccessor.HttpContext.Session.Get("SIMInside");
            }
            set
            {
                _contextAccessor.HttpContext.Session.Set("SIMInside", value);
            }
        }

在本例中,Get返回byte[]数组,或者Set也需要byte[]数组

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-17 08:15:14

与传统的ASP.NET应用程序相比,ASP.NET核心有一种使用会话的不同方式。

不幸的是,您不能再在其中存储复杂的对象。为了存储对象,它被转换成JSON并作为字符串存储。稍后,检索为字符串,并将其反序列化为原始对象。

在您的示例中,您可以使用SetInt32 and GetInt32存储和检索1表示true,0表示false,然后解析值。

代码语言:javascript
运行
复制
Convert.ToBoolean(session.GetInt32(“SIMInside”));

session.SetInt32(“SIMInside”, Convert.ToInt32(value));

不要忘记使app.UseSession();能够使用会话。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71154135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档