Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 16577|Відповідь: 1

[ASP.NET] Стани сесій не можна серіалізувати. У режимі «StateServer» або «SQLServer»...

[Копіювати посилання]
Опубліковано 18.11.2017 21:37:45 | | | |
Стани сесій не можна серіалізувати. У режимі «StateServer» або «SQLServer» ASP.NET серіалізує об'єкти стану сесії, тому несеріалізовані об'єкти або об'єкти MarshalByRef не дозволяються. Ті ж обмеження діють, якщо сховище стану кастомної сесії виконує подібну серіалізацію в режимі «Custom».        



Рішення:

Змінні не можна серіалізувати при призначенні сесії, тому спробуйте додати [серіалізований] до класу. Розв'язання проблем

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

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

Серіалізація означає процес зберігання стану екземпляра об'єкта на носії зберігання. У цьому процесі публічні та приватні поля об'єкта, а також назва класу (включаючи асемблер, у якому розташований клас) конвертуються у байтстрім перед записом байтстріму у потік даних. Коли об'єкт згодом десеріалізується, створюється ідентична копія оригінального об'єкта.
При впровадженні механізмів серіалізації в об'єктно-орієнтованому середовищі мають існувати певні компроміси між простотою використання та гнучкістю. Якщо у вас достатньо контролю над цим процесом, ви можете зробити його майже автоматичним. Наприклад, проста бінарна серіалізація недостатньо, або потрібно визначити, які поля класу потрібно серіалізувати з певної причини. Наступні розділи розглянемо надійні механізми серіалізації, які надає фреймворк .NET, і виділимо деякі важливі функції, які дозволяють налаштувати процес серіалізації відповідно до ваших потреб.





Попередній:ASP.NET StateServer, який зберігає сесію
Наступний:SQL Як скопіювати одну таблицю для іншої
 Орендодавець| Опубліковано 19.11.2017 16:19:48 |
Для деяких об'єктів, які успадковують від MarshalByRef, таких як об'єкти DbTransation, їх не можна серіалізувати. Тому ви не можете використовувати Session для зберігання об'єктів, які успадковують тип MarshalByRef.
Обхідним шляхом є використання кешу та SessionID для емуляції сесії. Клас Cache може кешувати будь-який тип об'єкта.
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com