Состояние сеанса SQL и ошибка Javascript

Я переключил хранилище сеансов на SQL-сервер с помощью:

    <sessionState mode="SQLServer"
           sqlConnectionString="data source= jim; user id=jim;password=jim;"
           cookieless="false"
           timeout="20" />

  </system.web>

и теперь я получаю следующую ошибку в этом коде

var eventArgs = new Sys.WebForms.EndRequestEventArgs(error, data ? data.dataItems : {}, executor);
Sys.Observer.raiseEvent(this, "endRequest", eventArgs);
if (error && !eventArgs.get_errorHandled()) {
    throw error;
}

Ошибка выполнения Microsoft JScript: Sys.WebForms.PageRequestManagerServerErrorException: при обработке запроса на сервере произошла неизвестная ошибка. Код состояния, возвращенный сервером, был: 500.

Если я оставлю сеанс по умолчанию, а не SQL Server, он будет работать нормально. Еще один момент: я могу добавлять элементы в сеанс ОК - похоже, это происходит при перезагрузке страницы - может быть, какая-то проблема с AJAX?

Что касается настройки хранилища сеансов SQL, я сделал следующее: http://support.microsoft.com/kb/317604

Приложение отлично работает, когда я его запускаю.

Заранее спасибо.

Джим

РЕДАКТИРОВАТЬ - В журнале приложения теперь я вижу: «System.Web.UI.WebControls.ListItem» в сборке «System.Web, Version = 4.0.0.0, Culture = нейтральный, PublicKeyToken = b03f5f7f11d50a3a» не помечен как сериализуемый.

... и правда, я добавляю элемент списка в состояние просмотра. Но почему это работает нормально - кроме случая сохранения сеанса в SQL?]

Еще раз спасибо!

Джим


person BIDeveloper    schedule 21.01.2011    source источник
comment
Можете ли вы добавлять / извлекать элементы из сеанса и отображать их на экране?   -  person m.edmondson    schedule 21.01.2011
comment
Также проверьте, есть ли какие-либо записи в средстве просмотра событий серверной формы ASP.NET. Возможно, он записал трассировку стека.   -  person gbvb    schedule 21.01.2011
comment
Привет - да ... добавление и извлечение из сеанса в порядке   -  person BIDeveloper    schedule 21.01.2011
comment
@gbvb - хороший ответ - я обновил свой исходный вопрос, чтобы отразить то, что было в журнале. Спасибо.   -  person BIDeveloper    schedule 21.01.2011
comment
Зачем нужно запускать EndRequest вручную? Ваш сеанс работает нормально, возможно, это не связано с ошибкой.   -  person Dercsár    schedule 21.01.2011
comment
Возможно, ранее вы использовали хранилище сеансов InProcess, которое не выполняет сериализацию. В журнале ошибок указано, в чем проблема.   -  person Dercsár    schedule 21.01.2011
comment
Я не вызываю EndRequest ... это сгенерированный код, я полагаю, AJAX ...   -  person BIDeveloper    schedule 21.01.2011
comment
Дайте нам знать, чем вы закончили, если возможно. :)   -  person gbvb    schedule 22.01.2011


Ответы (2)


Похоже, это может быть хорошим ответом?

person BIDeveloper    schedule 21.01.2011

Что ж, когда вам нужно экстернализовать / сериализовать контент, он должен вызвать сериализацию, чтобы получить поток. ListItem - это элемент управления пользовательского интерфейса, который не нужно сериализовать .. :) http://bytes.com/topic/asp-net/answers/322990-serializing-drop-down-list-data-sources-session-state

person gbvb    schedule 21.01.2011