Определение того, какой элемент управления сериализуется - PullRequest
0 голосов
/ 08 ноября 2011

Аналогично Этот вопрос , у меня есть приложение, которое сильно зависит от сеанса в процессе. Я сейчас пытаюсь переместить хранилище сеансов на локальный государственный сервер.

Я получаю ошибку:

Тип 'System.Web.UI.Control' в сборке 'System.Web, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a' не помечена как сериализуемая.

Проблема в том, что я не могу определить, какой элемент управления пытается быть сериализован.

Полное исключение и трассировка стека не показывают мне никакой дополнительной информации.

Есть ли способ определить, какой элемент управления пытается быть сериализован?

Использование ASP.net, IIS7, Framework 4.0

1 Ответ

1 голос
/ 08 ноября 2011

Выполните глобальный поиск по Session[ или Session.Item и найдите все с = справа. Это все задания для сессии. Это не может мне больше, чем несколько сотен. Одним из них является System.Web.UI.Control. Это, вероятно, было введено в сессию, чтобы избежать попадания в базу данных. Перепишите этот код, чтобы сохранить DataTable или DataSet или другие значения вместо сохранения элемента управления.

Если у вас нет исходного кода, не существует простого способа справиться с такой нехваткой декомпиляции, исправления кода и перекомпиляции.

Даже если вы отказываетесь от SqlSession, вы все равно можете прекратить помещать элементы управления пользовательского интерфейса в 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...