JQuery Post к переменным сеанса метода MVC исчезает - PullRequest
0 голосов
/ 08 января 2010

Я пишу приложение ASP.Net MVC, использующее Jquery для публикации некоторых данных в моем сеансе пользователей.

Пользователь 1-й получает доступ к странице моего сайта, а затем у меня есть кнопка, которая выполняет публикацию с использованием JQuery в метод контроллера MVC для сохранения некоторых данных в сеансе пользователей.

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

Когда пользователь нажимает кнопку на странице, выполняется публикация JQuery для добавления данных в объект JoinState. Это приводит к методу контроллера MVC, который получает доступ к уже определенному сеансу и обновляет объект JoinState опубликованными данными.

Однако, когда сообщение занимает место, мое приложение не распознает начальный сеанс, который был создан. Это приводит к «Объекту, не установленному для экземпляра ....» (в основном исключение нулевой ссылки), поскольку уже определенный объект JoinState теперь не существует.

Я просто не могу понять, почему это происходит. Пока что я разработал следующее:

  • Это влияет только на пользователей, которые получают доступ к сайту из-за пределов моей сети.
  • Пользователи в моей сети не затрагиваются.
  • Имя URL - это динамическое имя DNS - может ли это повлиять на то, как .net видит сеанс?
  • Я использовал firebug для отладки запроса POST и могу подтвердить, что куки-файл сеанса ASP.Net отправляется.

По какой-то причине в моем посте JQuery мой исходный сеанс не распознается.

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

Ответы [ 3 ]

0 голосов
/ 09 января 2010

Если имя URL-адреса динамическое, файл cookie сеанса, созданный ASP.Net, не будет действительным при изменении имени URL-адреса, поэтому вы потеряете соединение с существующим сеансом. Вы можете настроить свой веб-сайт для сеансов без файлов cookie, но вам придется проверить, нужно ли вам вручную добавлять переменную строки запроса ключа сеанса или нет.

0 голосов
/ 09 января 2010

Ну, ,,,,, проблема теперь решена.

  • Ничего общего с MVC.
  • Ничего общего с JQuery
  • Все, что связано со мной, не полностью понимает состояние сеанса в asp.net.

Факты ...

  • Работал на локальном сервере Web Dev.
  • Приложение перенесено в IIS и перестало работать.

Результаты ...

  • Сессия InProc использовалась.
  • Рабочие процессы выше 1 установлены в IIS.

Каждый раз, когда выполнялся запрос, он запускал новый рабочий процесс. Поскольку сеанс хранился InProc или в памяти каждого отдельного процесса, каждый раз, когда запрос получал новый WP, он получал новый сеанс.

Окончательное заключение ....

  • Не связывайтесь с настройками IIS, которые вы не понимаете !!!

Рабочие процессы теперь возвращены к 1 - приложение работает.

Время спать - спасибо всем, кто откликнулся.

0 голосов
/ 08 января 2010

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

Вам нужно будет вернуть ключ сеанса или что-то еще, чтобы вы могли загрузить его и затем добавить к нему.

Все это у меня в голове и абсолютно не проверено.

Если я ошибаюсь, дайте мне знать, и я проведу некоторое тестирование и, возможно, уберу этот ответ, чтобы не перепутать проблему.

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