我使用此代码返回对象列表以将它们存储在 out-proc session 中:
Session["Data"] = DataContext.ObjectSet.Select(rec => new { Title = rec.Title , Count = rec.Count });
但是如您所知,我们不能在进程外会话中存储不可序列化的类,有没有办法做到这一点?请不要说我定义它的类,我正在寻找 C# 中的后门或这样做的技巧
谢谢
一种简单的方法是转换为数组对象
Session["Data"] = DataContext.ObjectSet
.Select(rec => new { Title = rec.Title , Count = rec.Count })
.ToArray();
您甚至可以将其转换为 List 对象并将其序列化为您自己的对象
var data = DataContext.ObjectSet
.Select(rec => new SessionData() { Title = rec.Title , Count = rec.Count })
.ToList();
System.Web.Script.Serialization.JavaScriptSerializer oSerializer =
new System.Web.Script.Serialization.JavaScriptSerializer();
Session["Data"] = oSerializer.Serialize(data);
并使用
public class SessionData {
public string Title { get; set; }
public int Count { get; set; }
}
但是在会话中持有这样的对象......你可能会做错事,不是吗?想象一下,在给定的时间内,您将拥有该列表的 1000 条记录...