У меня есть существующий проект webforms, и я хочу добавить в него свой новый MVC4 (мобильный-ориентированный) сайт, как субдомен. Я также хочу, чтобы он мог получить доступ к переменным сеанса с веб-сайта. Идея состоит в том, что пользователь входит в систему на веб-сайте, устанавливает переменную сеанса и перенаправляется на мобильный сайт (на субдомене).
Первоначально я добавил сайт MVC на сайт webforms, внеся изменения в web.config, global.asax (для маршрутизации и т.д.), Контроллеры, представления и другие папки на корневом уровне. Это позволяет мне получить доступ к переменным сеанса. Однако, поскольку сайт веб-форм хорошо установлен (старый), есть последствия для изменения web.config (наименее всего повторного тестирования). Отсюда и необходимость в субдомене.
Это так же просто, как удаление папки моего MVC-сайта в корневой каталог Webforms, поэтому у него есть собственный web.config и изменение global.asax для его маршрутизации (а затем создания субдомена)? Смогу ли я получить доступ к переменным сеанса в субдомене?
Чтобы поделиться сеансом, я внедрил это из Microsoft. Это HttpModule. http://support.microsoft.com/kb/2527105
Была сделана некоторая дополнительная работа – я чувствовал, что в этой статье предполагается, что вы немного знаете об IIS. Например, мне пришлось вручную добавить модуль с помощью диспетчера IIS.
Мне удалось заставить его работать в IIS7, вручную добавив модуль с помощью диспетчера IIS.
(Откройте диспетчер IIS → выберите приложение → модули щелчка (вверху справа) → добавьте SharedSessionModule, нажав “Добавить управляемый модуль”.
Name: SharedSessionModule
Type: <namespace>.SharedSessionModule
(в диалоговом окне сказано, что он не может найти сборку, но во время выполнения это было хорошо)
Затем перезапустите IIS.
Проблема, с которой я тогда столкнулась, заключалась в том, что “состояние сеанса недоступно в этом контексте” при обслуживании нестраничных элементов, таких как изображения,.pdfs и т.д. Прежде чем я это решил, меня попросили использовать мой первоначальный метод (бок о бок), поэтому я не нашел, как изменить это, но есть много предложений о SO и других сайтах.
Вы можете создать новый проект для мобильного MVC, настроить привязку домена в IIS примерно так же, как и m.mydomain.com. В web.config из двух вы определяете один и тот же основной домен:
<httpCookies domain=".mydomain.com"/>
Вот запустить задачу difficoult, вы должны играть внимание на одни и те же machineKey
в двух проектах и, возможно, вам нужно добавить HttpModule в зависимости от выбранного сценария сеанса.
Взгляните на эту статью, которая поможет вам в некоторых рекомендациях.