Могут области в приложении ASP.NET MVC 2 отображаться на субдомен?

Есть ли способ отобразить области в рамках приложения ASP.NET MVC 2 к субдоменам такой как

movies.example.com/Theater/View/2

вместо

example.com/Movies/Theater/View/2

где {область = "Фильмы", контроллер = "Театр", действие = "Представление", идентификатор = 2}.

19
задан famousgarkin 26 December 2011 в 15:32
поделиться

3 ответа

Области не связаны напрямую для маршрутизации, поэтому ваш вопрос становится «Proputing поддерживает субдомены?»

Ответ на это, к сожалению, для этого нет встроенной поддержки.

Однако хорошие новости состоит в том, что многие люди пытались и нашли успех с пользовательским кодом, который основывается на вершине маршрута:

Если вы выясните, как понять поддомены без областей, а затем делать это с областями, не должно быть более сложно. Перейдите в свой район Регистрационный контекст и используйте любую технику, которую вы выбираете там. Районы - это просто способ объединять контроллеры и взгляды, - у них не очень много внутреннего значения для самого ASP.NET MVC (они немного делают немного, но не много).

11
ответ дан 30 November 2019 в 04:48
поделиться

Вы можете легко сопоставить домены или поддомены с областью 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/

5
ответ дан 30 November 2019 в 04:48
поделиться

Я столкнулся с той же проблемой, и я создал решение, которое сработало для меня, оно находится в моем блоге, надеюсь, оно будет полезно для вас.

Будьте здоровы Тони

3
ответ дан 30 November 2019 в 04:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: