ASP MVC маршрутизация работает по-разному в поддомене - PullRequest
2 голосов
/ 14 сентября 2011

У меня есть приложение, размещенное на сервере Amazon с двумя экземплярами, один для тестирования и один для производства.

т.е.На сервере 123.456.789.123 экземпляры приложения- wwwroot / myappuat- wwwroot / myappprod

Таким образом, настройки DNS субдомена myapp.mydomain.com указывают на сервер 123.456.789.123И для этих экземпляров были установлены правила перезаписи, давайте просто посмотрим на производство

<rule name="myapp.mydomain.com" stopProcessing="true">
<match url=".*" />
<conditions>
    <add input="{HTTP_HOST}" pattern="^myapp.mydomain.com$" />
</conditions>
<action type="Rewrite" url="\myappprod\{R:0}" />
</rule>

Проблема в том, что RedirectToAction, похоже, ведет себя иначе, чем когда я только тестировал локальный хост в разработке.

Например:

RedirectToAction("Login", "Home")

будет перенаправлен на http://myapp.mydomain.com/myappprod/Home/Login вместо намеченного http://myapp.mydomain.com/Home/Login

Я подозреваю, что мне нужно изменить настройки маршрутизации в RegisterRoutes.Но я не знаю, что делать.

Любая помощь по этому вопросу будет принята с благодарностью.

Ответы [ 2 ]

1 голос
/ 14 сентября 2011

Я нашел, где я пошел не так.

Тильда годов.

Например, существует перенаправление с URL-авторизации на страницу входа, которая была настроена следующим образом:

<authentication mode="Forms">
  <forms loginUrl="~/Home/Login" timeout="2880" />
</authentication>

Поскольку URL был переписан, путь все еще включается / myappprod. Снятие исправленной тильды

<authentication mode="Forms">
  <forms loginUrl="/Home/Login" timeout="2880" />
</authentication>

Еще одна вещь, пока я здесь. Убедитесь, что вы используете Url.Content("~/url/here"), а не просто "~/url/here". Особенно с этими тильдами.

0 голосов
/ 14 сентября 2011

Попробуйте добавить префикс в метод RegisterRoutes в global.asax

, например

routes.MapRoute(
            "Default", // Route name
            "myappprod/{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
...