Где разместить код для объектов Session в приложении ASP.NET

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

2 ответа

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

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

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

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

Довольно легко проверить, можно ли сериализовать объект. Вы можете использовать предоставленный вами пример кода или просто создать модульный тест (или тестирование в загрузке страницы для своего приложения, если это проще), который проверяет различные типы, которые вы храните в сеансе, как сериализуемые.

Другие вопросы по тегам