Идентификатор сессии меняется случайным образом - PullRequest
1 голос
/ 07 октября 2009

У меня есть простое приложение ASP.NET MVC. Когда запускается первый метод действия, он сохраняет некоторые данные в переменной Session. В результирующем представлении у меня есть вызов jquery ajax, вызванный кнопкой для другого метода действия.

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

Есть идеи, что происходит? Оба запроса направлены на один и тот же URL.

  1. Я вижу способ один создать новый сеанс с Id X и сохранить данные.
  2. Сразу после загрузки Jquery запрос срабатывает. В заголовке запроса отображается другой идентификатор cookie сеанса.
  3. Я получаю сообщение об ошибке "данные не найдены"

Большое спасибо,

Ответы [ 2 ]

2 голосов
/ 08 октября 2009

Это сделано специально, и ASP.NET пытается эффективно хранить сессии для пользователей. Помните, что если вы ничего не сохраняете в сеансе, значение сеанса изменяется.

Если вы хотите сообщить ASP.NET, что вы хотите отслеживать пользовательские сеансы, вы можете сделать одну из двух вещей:

  1. Сохраните что-нибудь в сеансе.
  2. Простая обработка события Session_Start в вашем GLobal.asax. Наличие этого метода скажет ASP.NET отслеживать сеансы, даже если в сеансе нет данных.

// ПРИМЕЧАНИЕ. Нет необходимости добавлять что-либо в сеанс, если вы делаете это ... public void Session_Start (отправитель объекта, EventArgs e)
{
}

Это поведение вызывало у меня много беспокойств в прошлом:)

0 голосов
/ 07 октября 2009

Все ли ваши AJAX-вызовы используют одно имя сервера:

http://localhost/whatever

против

http://machinename/whatever

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...