#asp.net-mvc-3 #iis-7 #url-routing #asp.net-mvc-routing
#asp.net-mvc-3 #iis-7 #url-маршрутизация #asp.net-mvc-routing
Вопрос:
Я создаю приложение MVC 3, которое управляет бизнесом для компаний-клиентов. При развертывании входящие запросы должны заметно указывать название компании-клиента; таким образом, http://hosteddomain.com/Excelsior/Home/Dashboard/3
должна быть получена домашняя страница для пользователя из client Excelsior.
Вопрос 1: На сервере разработки это работает нормально ( localhost:28497/ClientCompany/...
), потому что my RouteConstraint
ищет название компании. Однако, когда я развертываю это, как мне сообщить IIS отправлять все запросы в мое приложение? Как и сейчас, IIS будет искать приложение с именем «ClientCompany».
Вопрос 2: Есть ли лучший способ сделать это? Например, используя URL-адреса вида ClientCompany.hosteddomain.com/SomeAppName/[pages...]
. Если да, то как мне сообщить IIS о переназначении запросов в мое приложение И как мне получить название компании-клиента из приложения MVC?
Мета-вопрос 1: Может быть, лучше задать вопрос 1: как мне сделать так, чтобы мое приложение было веб-сайтом по умолчанию для IIS?
Спасибо за понимание, Эрик
Комментарии:
1. веб-сайты по умолчанию запускаются на порту 80. В IIS — Отключите веб-сайт с портом 80 по умолчанию (Default Web Site), а затем создайте новый веб-сайт, указывающий на ваше приложение, запущенное на порту 80.
2. @SilverNinja На самом деле, все, что мне нужно было сделать, это установить «Веб-сайт IIS / название приложения» на
Default Web Site
на вкладке Веб-пакет / Публикация в настройках пакета / публикации VS2010.3. @SilverNinja Теперь, когда я думаю об этом, ваше решение — это способ сделать мое приложение веб-сайтом по умолчанию, не называя его «Веб-сайтом по умолчанию» — Спасибо!
Ответ №1:
В вопросе № 2 вы можете получить доступ к необработанному URL из HttpContext.Current.Request
. Вы можете узнать оттуда все, что захотите.
Я бы настроил заголовки хостов в IIS для одного приложения, затем проанализировал URL и сделал все, что вам нужно, оттуда.
Редактировать
Единственное доменное имя, которое необходимо зарегистрировать, — это TLD (домен верхнего уровня), поэтому
subdomain.tld.com это просто поддомен, для которого вам нужно внести запись DNS, а затем настроить заголовки узлов IIS.
Взгляните на это:http://technet.microsoft.com/en-us/library/cc753195 (WS.10).aspx
Обратите внимание, что заголовки хостов не работают, если вы используете SSL, если я правильно помню.
Комментарии:
1. Можете ли вы указать мне ссылку для настройки заголовков хоста? Я совершенно новичок в IIS.
2. Спасибо, но я думаю, что я не собираюсь делать это таким образом. Причина в том, что
ClientBusiness.hosteddomain.com
должен быть зарегистрирован, что в общем случае я не могу сделать.
Ответ №2:
Вам нужно зарегистрировать маршруты в вашем global.asax
. Вы просто определяете шаблон, который хотите принять, и назначаете контроллер и параметры действия.
Комментарии:
1. Верно, но моя проблема заключается в том, чтобы заставить IIS перенаправлять запрос в мое приложение.