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

Вид: 16577|Ответ: 1

[ASP.NET] Состояния сессии не могут быть сериализованы. В режиме «StateServer» или «SQLServer»...

[Скопировать ссылку]
Опубликовано 18.11.2017 21:37:45 | | | |
Состояния сессии не могут быть сериализованы. В режиме «StateServer» или «SQLServer» ASP.NET сериализирует объекты состояния сессии, поэтому несериализируемые объекты или объекты MarshalByRef не допускаются. Те же ограничения действуют, если пользовательский хранилище состояния сессии выполняет аналогичную сериализацию в режиме «Пользовательский».        



Решение:

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

[Сериализируемо]
публичный класс MyClass
{
.......
}

Давайте поговорим о [сериализируемом], который используется для информирования компилятора о том, что класс можно сериализировать

Сериализация относится к процессу хранения состояния экземпляра объекта на носителе хранения. В этом процессе публичные и приватные поля объекта, а также название класса (включая ассемблер, в котором находится класс) преобразуются в байтстрим перед записью байтстрима в поток данных. Когда объект затем десериализируется, создаётся идентичная копия оригинального объекта.
При реализации механизмов сериализации в объектно-ориентированной среде должны быть определённые компромиссы между простотой использования и гибкостью. Если у вас есть достаточный контроль над этим процессом, вы можете сделать его в основном автоматическим. Например, простая бинарная сериализация недостаточно или необходимо определить, какие поля класса нужно сериализировать по определённой причине. В следующих разделах будут рассмотрены надёжные механизмы сериализации, предоставляемые фреймворком .NET, и выделены важные функции, позволяющие адаптировать процесс сериализации под ваши нужды.





Предыдущий:ASP.NET StateServer, который хранит сессию
Следующий:Sqlserver, как скопировать одну таблицу в другую
 Хозяин| Опубликовано 19.11.2017 16:19:48 |
Для некоторых объектов, наследующих от MarshalByRef, таких как объекты DbTransation, их нельзя сериализировать. Поэтому нельзя использовать Session для хранения объектов, наследующих тип MarshalByRef.
Обходной путь — использовать Cache и SessionID для эмуляции сессии. Класс Cache может кэшировать любой тип объекта.
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com