Състоянията на сесиите не могат да бъдат сериализирани. В режим "StateServer" или "SQLServer" ASP.NET сериализира обекти на сесийно състояние, така че несериализируеми обекти или MarshalByRef обекти не са позволени. Същите ограничения важат, ако магазинът за персонализирани сесийни състояния извършва подобна сериализация в "Custom" режим.
Решение:
Променливите не могат да се сериализират при присвояване на сесия, затова опитайте да добавите [Сериализираем] към класа. Решаване на проблеми
[Сериализираем] публичен клас MyClass
{ .......
}
Нека поговорим за [Serializable], който се използва, за да информира компилатора, че класът може да бъде сериализиран
Сериализацията се отнася до процеса на съхранение на състоянието на обектна екземпляр в носител за съхранение. В този процес публичните и частните полета на обекта и името на класа (включително асемблера, в който се намира класът) се преобразуват в байтов поток, преди да се запише байтстрийм към потока данни. Когато обектът впоследствие бъде десериализиран, се създава идентично копие на оригиналния обект. При прилагане на механизми за сериализация в обектно-ориентирана среда трябва да има някои компромиси между лесната употреба и гъвкавостта. Докато имате достатъчно контрол върху този процес, можете да го направите до голяма степен автоматизиран. Например, простата двоична сериализация не е достатъчна, или е необходимо да се определи кои полета в класа трябва да бъдат сериализирани по конкретна причина. Следващите раздели ще разгледат надеждните механизми за сериализация, предоставяни от .NET фреймуърка, и ще подчертаят някои от важните характеристики, които ви позволяват да персонализирате процеса на сериализация според вашите нужди.
|