ASP.NET MVC 3 - настраиваемый профиль и сохранение в State Server

У нас есть собственный класс профиля, унаследованный от ProfileBase. Мы хотели бы вставить этот объект в Session, чтобы избавить от необходимости продолжать извлекать его по запросу.

Мы используем ASP.NET State Server и получаем следующее исключение:

Тип "ProfileCommon" в сборке "App_Code.nvrow7px, версия =0.0.0.0, культура = нейтральный, PublicKeyToken= ноль" не помечен как сериализуемый.

Добавление Serializable в наш класс не помогло. Я предполагаю, что "ProfileCommon" в сообщении - это немного красной сельди, поскольку это не название нашего класса, но это nmae, когда вы используете Profiles с веб-проектами.

Является ли единственной возможностью преобразовать наш пользовательский объект профиля в сериализуемый тип для "транспорта" в и из сеанса?

ура

1 ответ

Решение

ASP.NET StateServer использует двоичную сериализацию для хранения любых графов объектов. Двоичная сериализация требует, чтобы каждый объект в графе объектов был сериализуемым (включая базовые типы объектов). Как таковая маркировка только вашего пользовательского профиля класса как [Serializable] мало что сделает, если классы в его иерархии классов также не реализуют [Serializable]

ни ProfileBase ни ProfileCommon воплощать в жизнь [Serializable] как таковой, невозможно сохранить любой класс, производный от них, в StateServer, не копируя эти данные в полностью сериализуемую иерархию классов или не преобразуя данные в другой формат (например, XML) и не сериализуя его.

Для дополнительной информации:

Объекты, хранящиеся в состоянии сеанса, должны быть сериализуемыми, если для режима задан StateServer. Для получения информации о сериализуемых объектах см. Класс SerializableAttribute.

Состояние сеанса

Примените атрибут SerializableAttribute к типу, чтобы указать, что экземпляры этого типа могут быть сериализованы. Общеязыковая среда выполнения выдает исключение SerializationException, если какой-либо тип в графе сериализуемых объектов не имеет примененного атрибута SerializableAttribute.

SerializableAttribute

Другие вопросы по тегам