SqlSessionState: невозможно привести объект типа System.DBNull к типу System.Byte[].

Изредка мы получаем следующую ошибку. Я не смог воспроизвести это. Я пытался выйти из системы и перейти на страницу, требующую аутентификации, но это исключение не выдается.

До сих пор это исключение встречалось только в веб-сервисах, которые вызываются сразу после загрузки страницы. (Таким образом, происходит загрузка страницы, затем событие onready начинает загружать некоторые данные с помощью вызовов ajax)

Мы используем веб-формы с хранилищем сеансов сервера SQL.

Unable to cast object of type 'System.DBNull' to type 'System.Byte[]'.
at System.Web.SessionState.SqlSessionStateStore.DoGet(HttpContext context, String id, Boolean getExclusive, Boolean& locked, TimeSpan& lockAge, Object& lockId, SessionStateActions& actionFlags) at System.Web.SessionState.SqlSessionStateStore.GetItemExclusive(HttpContext context, String id, Boolean& locked, TimeSpan& lockAge, Object& lockId, SessionStateActions& actionFlags) at System.Web.SessionState.SessionStateModule.GetSessionStateItem() at System.Web.SessionState.SessionStateModule.BeginAcquireState(Object source, EventArgs e, AsyncCallback cb, Object extraData) at System.Web.HttpApplication.AsyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

Что я могу сделать, чтобы это исправить?

1 ответ

Похоже, ваш сеанс истекает, но вы предполагаете, что извлекаете объект из состояния сеанса.

Я предлагаю добавить нулевую проверку в код, прежде чем пытаться назначить объект сеанса.

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