Как перенаправить все запросы IIS в мое приложение MVC?

#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 перенаправлять запрос в мое приложение.