Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 16577|Отговор: 1

[ASP.NET] Състоянията на сесиите не могат да бъдат сериализирани. В режим "StateServer" или "SQLServer"...

[Копирай линк]
Публикувано в 18.11.2017 г. 21:37:45 ч. | | | |
Състоянията на сесиите не могат да бъдат сериализирани. В режим "StateServer" или "SQLServer" ASP.NET сериализира обекти на сесийно състояние, така че несериализируеми обекти или MarshalByRef обекти не са позволени. Същите ограничения важат, ако магазинът за персонализирани сесийни състояния извършва подобна сериализация в "Custom" режим.        



Решение:

Променливите не могат да се сериализират при присвояване на сесия, затова опитайте да добавите [Сериализираем] към класа. Решаване на проблеми

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

Нека поговорим за [Serializable], който се използва, за да информира компилатора, че класът може да бъде сериализиран

Сериализацията се отнася до процеса на съхранение на състоянието на обектна екземпляр в носител за съхранение. В този процес публичните и частните полета на обекта и името на класа (включително асемблера, в който се намира класът) се преобразуват в байтов поток, преди да се запише байтстрийм към потока данни. Когато обектът впоследствие бъде десериализиран, се създава идентично копие на оригиналния обект.
При прилагане на механизми за сериализация в обектно-ориентирана среда трябва да има някои компромиси между лесната употреба и гъвкавостта. Докато имате достатъчно контрол върху този процес, можете да го направите до голяма степен автоматизиран. Например, простата двоична сериализация не е достатъчна, или е необходимо да се определи кои полета в класа трябва да бъдат сериализирани по конкретна причина. Следващите раздели ще разгледат надеждните механизми за сериализация, предоставяни от .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