【发布时间】:2022-01-25 10:16:30
【问题描述】:
我遇到了一个错误,我尝试这样做:
HttpContext.Session.Set<User>("user", who);
我收到了这个错误:
不能使用非泛型方法'ISession.Set(string, byte[]) 带类型参数
我有一类User 和who 有关于用户的所有信息。
错误是.Set<User>
【问题讨论】:
标签: c# razor-pages
我遇到了一个错误,我尝试这样做:
HttpContext.Session.Set<User>("user", who);
我收到了这个错误:
不能使用非泛型方法'ISession.Set(string, byte[]) 带类型参数
我有一类User 和who 有关于用户的所有信息。
错误是.Set<User>
【问题讨论】:
标签: c# razor-pages
ASP.NET Core 不允许您在会话中存储随机对象。只能存储字节数组。
ISession.Set(String, Byte[]) Method (Microsoft.AspNetCore.Http) | Microsoft Docs
有存储和检索a string 或an 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"));
【讨论】:
Context.Session。对于an MVC controller,请使用HttpContext.Session。
static 方法或属性调用Context.Session.GetString?