确定哪个控件被序列化

时间:2011-11-08 18:23:44

标签: asp.net session serialization session-state session-state-server

This Question类似,我的应用程序在很大程度上依赖于进程内会话。我现在正在尝试将会话存储移动到本地State Server。

我收到了错误:

  

在Assembly'System.Web中输入'System.Web.UI.Control',Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'未标记为可序列化。

问题是我无法确定哪个控件正在尝试序列化。

完整的异常和堆栈跟踪不会向我显示任何其他信息。

有没有办法确定哪些控件试图序列化?

使用ASP.net,IIS7,Framework 4.0

1 个答案:

答案 0 :(得分:1)

Session[Session.Item进行全局搜索,并使用右侧的=找到所有内容。这就是Session的所有任务。几百个不能超过我。其中之一是System.Web.UI.Control。它可能被放入会话以避免命中数据库。重写该代码以存储DataTable或DataSet或其他值,而不是存储Control。

如果你没有源代码,就没有一种简单的方法可以解决这种反编译,修复代码和重新编译的问题。

即使您放弃了SqlSession,您仍可能希望停止将UI控件放入Session中 - 它可能会导致OutOfMemory问题:http://blogs.msdn.com/b/tess/archive/2008/05/28/asp-net-memory-thou-shalt-not-store-ui-objects-in-cache-or-session-scope.aspx