ASP .Проблема перенаправления Net MVC 5

#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. Таким образом, «приложение» будет отображаться только один раз в пути.