2010-08-21 1 views
0

Я получаю ошибку сериализации, пытаясь использовать Session State Server вместо InProd. Однако я не могу понять, что вызывает ошибку в сеансе. Мне был предоставлен некоторый код для добавления на страницу, чтобы перебрать объект сеанса и выяснить, будет ли каждый элемент в нем сериализован. Моя проблема в том, что я не знаю, где разместить код на странице ASP.NET. Прослеживая код, ошибка появляется только после перехода через объекты за пределами страницы, а не при настройке сеанса. Должно быть какое-то место, где я могу разместить код на странице после всех объектов сеанса, но перед ошибкой страницы. Где это будет?Где разместить код для объектов Session в приложении ASP.NET

+0

Получаете ли вы стек, когда это происходит? Обычно это дает дополнительную информацию. –

+0

Я могу; t сказать из исключения, где установлен сеанс, и я не могу найти его в коде. Вот почему мне нужно проверить объект сеанса. – user31673

ответ

0

Вы можете поместить его в pageload, установить точку останова, а затем пройти через десериализующий код до тех пор, пока он не станет barfs - это скажет вам, какой объект еще не сериализуется, и блокирует переход к использованию SQL для сеансов. Трудно сказать без исходного кода, который вы получили для тестирования для serializable.

Это может помочь продумать то, что вы пытаетесь сделать здесь. Поскольку SQL State Server требует, чтобы объекты были Serializable, где InProc не делает, любой объект, который вы помещаете в Session, должен быть Serializable.

Таким образом, вы хотите проверить, что любые объекты, хранящиеся в сеансе, являются Serializable или, как сказал другой ответчик, выяснить, какой объект не является Serializable и вызывает проблемы.

Это довольно легко test whether an object can be Serialized. Вы можете использовать образец кода, который вам предоставили, или просто создать единичный тест (или тест в pageload для вашего приложения, если это проще), который проверяет различные типы, которые вы храните в сеансе, как сериализуемые.

+0

pageload слишком рано в этом процессе. Ошибка не возникает в момент установки сеанса, но как только страница готова к отправке. Мне просто нужно место, где установлен весь сеанс, но до его появления. – user31673

0

Ответ на этот вопрос заключается в размещении кода в обработчике событий SaveStateComplete.