Отключение sessionState приводит к тому, что действия вызываются дважды.C#

Место общения программистов C#
Anonymous
Отключение sessionState приводит к тому, что действия вызываются дважды.

Сообщение Anonymous »

В настоящее время мы больше не используем sessionState, теперь мы полагаемся на файлы cookie с зашифрованными данными, которые мы раньше сохраняли в сеансе.
У нас была эта функция, которая отвечала за сохранение данные в сеансе, но в настоящее время мы передаем только пустую строку в качестве параметра значения.

Код: Выделить всё

        public static void SaveSession(object session_name, object value)
{
HttpContext context = HttpContext.Current;
context.Session.Add(session_name.ToString(), value);
}
В настоящее время это работает нормально (используется пустая строка, пока мы не исправим эту проблему). Но всякий раз, когда я комментирую этот код и устанавливаю для sessionState значение mode="Off" в Web.config, многие мои действия начинают вызываться дважды. И из-за этого он начинает выдавать много ошибок, когда пытается получить что-либо из БД, потому что действие, которое было выполнено первым, открывает БД и делает то, что ему нужно, а тем временем другой поток пытается прочитать то же действие до завершения первого (это не асинхронное действие). Поскольку первый еще не закрыл БД, второй выходит из строя, и это нарушает код. Это пример ошибки, которую я получаю:

Код: Выделить всё

System.InvalidOperationException: 'ExecuteReader requires an open and available Connection. The connection's current state is connecting.'
И когда я проверяю свой SQL-сервер, в этой таблице (

Код: Выделить всё

sys.dm_exec_sessions
), я вижу, что одновременно создается множество сеансов (проверяя столбец session_id), и в конечном итоге оно достигает максимума, и все останавливается. Этого не происходит, когда я оставляю sessionState включенным.
Помните, что все работает, пока я оставляю sessionState включенным и передаю этому действию пустую строку. Ничто другое больше не использует это действие, поэтому, когда я его комментирую, я все еще могу скомпилировать проект и все остальное. Будем очень признательны за любые идеи!

Подробнее здесь: https://stackoverflow.com/questions/790 ... lled-twice

Вернуться в «C#»