【问题标题】:Error when i try make HttpContext.Session.Set当我尝试制作 HttpContext.Session.Set 时出错
【发布时间】:2022-01-25 10:16:30
【问题描述】:

我遇到了一个错误,我尝试这样做:

HttpContext.Session.Set<User>("user", who);

我收到了这个错误:

不能使用非泛型方法'ISession.Set(string, byte[]) 带类型参数

我有一类Userwho 有关于用户的所有信息。 错误是.Set<User>

【问题讨论】:

    标签: c# razor-pages


    【解决方案1】:

    ASP.NET Core 不允许您在会话中存储随机对象。只能存储字节数组。

    ISession.Set(String, Byte[]) Method (Microsoft.AspNetCore.Http) | Microsoft Docs

    有存储和检索a stringan int 的扩展方法。但是没有存储类实例的方法。

    Set and get Session values - Session in ASP.NET Core | Microsoft Docs

    最简单的选择是将对象序列化为 JSON 并将 JSON 字符串存储在会话中。但是需要考虑一些复杂性,例如discussed in this thread

    Session.SetString("user", JsonConvert.SerializeObject(who));
    User who2 = JsonConvert.DeserializeObject<User>(Session.GetString("user"));
    

    【讨论】:

    • SerializeObject(who),完美,结果!但是这个:“用户 who2 = JsonConvert.DeserializeObject(Session.GetString("user"));”我收到如下错误:“当前上下文中不存在名称 'Session'”
    • 如果我尝试将 HttpContext 放在 .Session.GetString 之前,我收到错误:“非静态字段、方法或属性 'HttpContext.Session' 需要对象引用
    • 对于a Razor page,使用Context.Session。对于an MVC controller,请使用HttpContext.Session
    • Razor 页面.. 出现同样的错误
    • 您是否尝试从static 方法或属性调用Context.Session.GetString
    猜你喜欢
    • 2011-04-25
    • 2020-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    • 2019-01-11
    • 1970-01-01
    相关资源
    最近更新 更多