Стани сесій не можна серіалізувати. У режимі «StateServer» або «SQLServer» ASP.NET серіалізує об'єкти стану сесії, тому несеріалізовані об'єкти або об'єкти MarshalByRef не дозволяються. Ті ж обмеження діють, якщо сховище стану кастомної сесії виконує подібну серіалізацію в режимі «Custom».
Рішення:
Змінні не можна серіалізувати при призначенні сесії, тому спробуйте додати [серіалізований] до класу. Розв'язання проблем
[Серіалізовано] публічний клас MyClass
{ .......
}
Давайте поговоримо про [серіалізований], який використовується для інформування компілятора, що клас можна серіалізувати
Серіалізація означає процес зберігання стану екземпляра об'єкта на носії зберігання. У цьому процесі публічні та приватні поля об'єкта, а також назва класу (включаючи асемблер, у якому розташований клас) конвертуються у байтстрім перед записом байтстріму у потік даних. Коли об'єкт згодом десеріалізується, створюється ідентична копія оригінального об'єкта. При впровадженні механізмів серіалізації в об'єктно-орієнтованому середовищі мають існувати певні компроміси між простотою використання та гнучкістю. Якщо у вас достатньо контролю над цим процесом, ви можете зробити його майже автоматичним. Наприклад, проста бінарна серіалізація недостатньо, або потрібно визначити, які поля класу потрібно серіалізувати з певної причини. Наступні розділи розглянемо надійні механізми серіалізації, які надає фреймворк .NET, і виділимо деякі важливі функції, які дозволяють налаштувати процес серіалізації відповідно до ваших потреб.
|