2014-01-07 3 views
0

Я пытаюсь реализовать управление сеансом StateServer для моего приложения asp.net. Я узнал, что каждый объект n my сеанс должен быть сериализуемым.Невозможно сериализовать состояние сеанса. В режиме «StateServer» и «SQLServer» ASP.NET будет сериализовать объекты состояния сеанса и в результате

для этого я добавил Serializable бирка для всех классов. Но он показывает выше сообщение об ошибке. Затем я попробовал функцию Linq-To-Sql, чтобы по крайней мере объект был сериализован. Но это тоже не сработало. что, возможно, я должен делать.

+0

возможно дубликат [Невозможно сериализации состояния сеанса] (http://stackoverflow.com/questions/ 5889240/неспособное к сериализации-сессия-состояние) –

ответ

1

Проблема в том, что вы помещаете что-то в сеанс, который не является сериализуемым (как вы подозреваете).

Так как вы пометили свои собственные классы, как Serializable есть несколько вероятных возможностей:

  1. Вы унаследовали от чего-то, что не Serializable (так испачкать унаследованный класс Serializable не Помогите).

  2. Вы пытаетесь сохранить что-то в сеансе, которое не является одним из ваших классов, и не является сериализуемым, скорее всего, классом каркаса. Обычными примерами могут быть EntitySet, DataTable или Dictionary<>.

Точный класс, вызывающий проблему, должен быть ясен из полной информации об исключении.

Например, следующий в сообщении об ошибке, показанного в вопросе Я linked to:

[SerializationException: Type 'Gebruiker' in Assembly 'App_Code.qzuhycmn, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' is not marked as serializable.] 
+0

Да, это класс работы с рамой System.Data.Linq.DataContext. Фактическая ошибка: SerializationException: введите 'System.Data.Linq.DataContext' в Assembly 'System.Data.Linq. ЧТО Я ДОЛЖЕН СДЕЛАТЬ, ЧТОБЫ ОСУЩЕСТВЛЯТЬ «СТАТЕСЕРВЕР». – Sunil

+0

Не храните DataContext в сеансе (это, скорее всего, будет плохим планом). Сохраните результаты, которые вы используете для создания ваших страниц в состоянии, но структурные элементы, такие как DataContext - это должно быть свежим для каждого подразделения работы идеально. –

+0

Я не храню DataContext в сеансе, фактически хранится класс, который наследует DataContext.Can существует какой-либо возможный способ сохранить этот объект, который вам нужно указать в dbml (я прочитал документ, говорящий, что вам нужно добавить ), но я запутался, где его добавить. – Sunil

Смежные вопросы