Есть ли способ отобразить области в рамках приложения ASP.NET MVC 2 к субдоменам такой как
movies.example.com/Theater/View/2
вместо
example.com/Movies/Theater/View/2
где {область = "Фильмы", контроллер = "Театр", действие = "Представление", идентификатор = 2}.
Области не связаны напрямую для маршрутизации, поэтому ваш вопрос становится «Proputing поддерживает субдомены?»
Ответ на это, к сожалению, для этого нет встроенной поддержки.
Однако хорошие новости состоит в том, что многие люди пытались и нашли успех с пользовательским кодом, который основывается на вершине маршрута:
Если вы выясните, как понять поддомены без областей, а затем делать это с областями, не должно быть более сложно. Перейдите в свой район Регистрационный контекст и используйте любую технику, которую вы выбираете там. Районы - это просто способ объединять контроллеры и взгляды, - у них не очень много внутреннего значения для самого ASP.NET MVC (они немного делают немного, но не много).
Вы можете легко сопоставить домены или поддомены с областью MVC2 с помощью модуля IIS7 URL Rewrite. Вот два простых правила, которые сопоставляют субдомены с двумя областями. Я добавил ограничение, чтобы не использовать это правило, если запрос касается фактического файла (например, файлов CSS, JS или изображений).
Вот пример конфигурации, которая находится прямо в вашем web.config:
<system.webServer>
<rewrite>
<rules>
<rule name="SubA Area">
<match url=".*" />
<action type="Rewrite" url="/SubA/{R:0}" />
<conditions>
<add input="{HTTP_HOST}" pattern="suba.mydomain.com" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
</rule>
<rule name="SubB Area">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="subb.mydomain.com" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
<action type="Rewrite" url="/SubB/{R:0}" />
</rule>
</rules>
</rewrite>
</system.webServer>
Вам придется изменить приведенные ниже правила для работы с вашим конкретным вариантом использования. Особенно, если у вас есть контроллеры в корневой области, которые вам нужно использовать. В этом случае просто добавьте условие или создайте новое правило.
Загрузите модуль перезаписи URL-адресов IIS (обязательно): http://learn.iis.net/page.aspx/460/using-the-url-rewrite-module/
Я столкнулся с той же проблемой, и я создал решение, которое сработало для меня, оно находится в моем блоге, надеюсь, оно будет полезно для вас.
Будьте здоровы Тони