Режим состояния сеанса установлен на SQLSERVER при получении - PullRequest
0 голосов
/ 12 сентября 2011

Я хочу сохранить свой сеанс в базе данных SQL Server, и для этого я хочу использовать режим состояния сеанса SQLSERVER, и я изменил свой web.config и добавил атрибут состояния сеанса:

<sessionState mode="SQLServer" timeout="30" sqlConnectionString="Data Source=server;user id=sa;password=sa;" cookieless="false" />

Когда я запускаю свое приложение, я получаю эту ошибку:

Невозможно сериализовать состояние сеанса. В режимах «StateServer» и «SQLServer» ASP.NET сериализует объекты состояния сеанса, и в результате несериализуемые объекты или объекты MarshalByRef не допускаются. То же ограничение применяется, если аналогичная сериализация выполняется в пользовательском хранилище состояний сеанса в режиме «Пользовательский».

Пожалуйста, помогите мне, у меня серьезная проблема. Спасибо и всего наилучшего.

1 Ответ

0 голосов
/ 18 марта 2015

Вопрос старый, но ответа не было, у меня была такая же проблема, и я нашел решение на другом сайте. Так как эта тема является первым результатом в Google, я добавляю решение здесь для других.

Проблема заключается в добавлении объекта struct в сеанс. Веб-приложение ASP.NET обрабатывает хранение объектов сеанса по-разному от режима InProc до режима SQLServer. При хранении объектов сеанса в SQL Server .NET Framework будет сериализовывать объекты. Это необходимо, поскольку объект сеанса необходимо передавать с сервера на сервер.

Трассировка стека (желтый раздел на странице ошибок) показывает, какой именно объект вызвал проблему. В моем случае:

[SerializationException: введите ' admin + users + stUsers ' в сборке 'App_Code.3_0rnsep, версия = 0.0.0.0, культура = нейтральная, PublicKeyToken = null 'не помечен как сериализуемый.]

Я добавил [Сериализуемый] тег выше моей структуры, и проблема исчезла.

[Serializable]
public struct stUsers
{ .... }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...