0

This Question类似,我有一个严重依赖进程内会话的应用程序。我现在正在尝试将会话存储移动到本地状态服务器。

我收到错误:

在程序集“System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”中键入“System.Web.UI.Control”未标记为可序列化。

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

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

有没有办法确定要序列化的控件是什么?

使用 ASP.net、IIS7、Framework 4.0

4

1 回答 1

1

全局搜索Session[orSession.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

于 2011-11-08T18:29:08.533 回答