#c# #asp.net-mvc
#c# #asp.net-mvc
Вопрос:
В настоящее время у меня есть внутренний сервер serv
, на котором есть приложение app
.
Он работает под управлением MVC 5 и имеет 2 страницы Account
/ Logon
, которые сопоставляются с контроллером и действием.
И Orders/Display
(снова контроллер / действие)
Для того, чтобы пользователи Интернета во внешнем мире могли видеть, что у меня есть хост-сервер host
под управлением IIS. Он сопоставляет URL-адреса хоста с внутренним приложением следующим образом
хост /Account/Logon
—> serv/app/Account/Logon
Так что в основном все, что после host/...
, изменяется на serv/app/....
Моя проблема в том, что если я это сделаю RedirectToAction("Display","Orders");
(таких перенаправлений много, потому что есть много комбинаций контроллер / действие.
Внутренний сервер захватывает часть хоста, но также нажимает на «приложение», чтобы переключиться на следующую страницу или маршрут
Итак, host/app/Orders/Display
моя проблема в том, что хост IIS сопоставляет этот URL host/app/app/Orders/Display
-адрес, потому что то, что он сопоставляет, настроено на выполнение. всегда добавляйте «приложение»
Как я могу решить эту проблему? Есть ли какой-либо способ serv
выполнить относительное сопоставление? В порядке слов он видит только оригинал host/Account/Logon
, так что при переключении это будет host/Orders/Display
?
Ответ №1:
Используйте Redirect()
вместо RedirectToAction()
и передайте URL.
Комментарии:
1. Я надеялся на переменную сервера ASP, которую я мог бы изменить, чтобы AppDomainAppVirtualPath не помещался в path
2. У Html.BeginForm также была такая же проблема. В этом случае мне, вероятно, пришлось кодировать HTML напрямую с пользовательским URL-адресом. В итоге мы создали новый веб-сайт, разместили приложение под ним с привязкой к порту 81 и изменили сопоставление, чтобы перейти на порт 81 и верхнюю часть IIS. Таким образом, «приложение» будет отображаться только один раз в пути.