IIS, состояние сеанса и виртуальные каталоги - PullRequest
3 голосов
/ 28 сентября 2010

Я создал веб-сайт с ASP.NET 2.0 и использую переменную сеанса, чтобы определить, заполнил ли пользователь форму проверки возраста.Все работает как положено (я могу прочитать переменную сеанса на всех страницах), пока пользователь не перейдет в виртуальный каталог.Когда они это делают, страница не может прочитать переменную сеанса.

После долгих исследований я до сих пор сделал следующее.

  1. Включите ASP.NET StateСервис
  2. Добавлен узел sessionState в мои файлы web.config, изменив режим на StateServer (для веб-сайта и виртуального каталога).

  3. Сгенерировал новый ключ машины и добавил его как на сайт, так и в виртуальный каталог ...

  4. Создал новый пул приложений и убедился, что веб-сайт и его виртуальный каталог используют один и тот же пул приложений.

Если я пишувне идентификатора сеанса <% = Session.SessionId%> это одинаково на страницах в и из виртуального каталога (это одинаково для всего сайта).Я просто не могу получить эту переменную сеанса!Кто-нибудь знает, что еще я могу попытаться заставить это работать?

Спасибо.

Ответы [ 2 ]

1 голос
/ 28 сентября 2010

Различный виртуальный каталог = разные приложения и приложения не делят данные сеанса между ними. Возможно, редизайн ваших приложений, чтобы избежать этого?

Вот возможное решение для обмена данными сеанса между приложениями ASP.NET.

Передача данных сеанса между приложениями ASP.NET

0 голосов
/ 01 октября 2010

Из всего, что я могу сказать, невозможно сделать то, что я хотел сделать.Что еще хуже, я решил использовать куки вместо переменных сеанса, думая, что, поскольку куки создаются и поддерживаются клиентом и основаны на домене, это будет работать.К сожалению, каким-то образом при создании с C # / ASP.NET даже куки не могут быть разделены.Поэтому мне пришлось использовать C # для вставки Javascript для создания файлов cookie, чтобы я мог делать то, что хотел.Конечный результат - не элегантное решение простой проблемы (ИМХО).

...