Может ли IIS 7 установить URL-адрес по умолчанию для области MVC 3

У меня есть решение MVC 3, которое разбито на области. Например, я могу получить доступ к приложению следующими способами: //myapp/ или //myapp/external или // myapp / internal. В IIS 7 я пытаюсь установить URL-адрес по умолчанию (в моем случае это будет //myapp) на // myapp / internal.

Поэтому каждый раз, когда кто-то переходит на // myapp, он перенаправляется на //maypp/internal (internal - это имя области, которую я настроил в MVC).

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

Спасибо за помощь.

2 ответа

Решение

Я решил свою проблему следующим образом:

а. В моем файле Web.Internal.config я добавил это преобразование:

<appSettings>
    <add key="Environment" value="Production Internal(Live)" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
</appSettings>         

Теперь, когда я развертываю свое решение на своем внутреннем сайте, значение Environment в моем Web.config перезаписывается на "Production Internal(Live)"

б. Затем я добавил проверку в свой контроллер по умолчанию и действие для поиска значения Environment в файле Web.config.

var InternalorExternalSite = Convert.ToString(ConfigurationManager.AppSettings["Environment"]);

if (InternalorExternalSite == "Production Internal(Live)")
    {
        return RedirectToAction("", "", new { area = "Internal" });
    }

Приведенный выше код проверит, равно ли значение "Среда" в моем случае "Production Internal(Live)", и перенаправит запрос в область "Internal".

Теперь, когда внутренний пользователь переходит на http://www.internalsite.com/ он перенаправляется в Район http://www.internalsite.com/internal

Когда внешний пользователь переходит на http://www.externalsite.com/ он не перенаправляется в какую-либо область, но если вам нужно, вы можете перенаправить пользователя в любую область на основании вышеизложенного.

Самый простой способ - создать контроллер по умолчанию в // myapp /, который 301-й пользователь в // myapp / internal. Всегда найдутся люди, которые наберут mydomain.com и вдруг ничего не получат.

Либо создайте в основном файле Global.asax.cs конкретный маршрут, который соответствует пустому, и направляет к указанному контроллеру, действию и области. Это в значительной степени поглощает концепцию "область совершенно отдельная".

Другие вопросы по тегам