0

我使用此代码返回对象列表以将它们存储在 out-proc session 中:

Session["Data"] = DataContext.ObjectSet.Select(rec => new { Title = rec.Title , Count = rec.Count });

但是如您所知,我们不能在进程外会话中存储不可序列化的类,有没有办法做到这一点?请不要说我定义它的类,我正在寻找 C# 中的后门或这样做的技巧

谢谢

4

1 回答 1

0

一种简单的方法是转换为数组对象

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 条记录...

于 2012-09-10T07:46:00.420 回答