ASP.NET MVC 3: перемещено приложение в виртуальный каталог.Что я должен изменить? - PullRequest
7 голосов
/ 08 ноября 2011

Народ,

Я работал над приложением MVC 3.Я использовал встроенный веб-сервер VS 2010.Сегодня по разным причинам меня попросили переместить его в виртуальный каталог и запустить его под IIS 7, все еще на моем компьютере для разработки.

Теперь, когда его URL-адрес - "localhost / MyVirtualDirectory", а не "localhost": 12345 ", что мне нужно изменить, чтобы маршрутизация работала и где?

Я не использую необработанные теги привязки HTML или перенаправления, просто @ Html.ActionLink и так далее.Согласно тому, что я прочитал, если бы я делал вещи способом MVC, это изменение должно было быть прозрачным.

Но в самом начале перенаправление после аутентификации завершается неудачно.При успешной аутентификации он должен возвращать результат

this.RedirectToAction("index", "Home")

Вы догадались: вместо «/ MyVirtualDirectory / Home» перенаправление переходит к «/ Home».Который терпит неудачу.

Итак, чего-то не хватает, что нужно настроить.Что это?

Спасибо всем.

1 Ответ

3 голосов
/ 08 ноября 2011

В IIS выберите виртуальный каталог и «Преобразовать в приложение».Кроме того, если вы используете карту маршрутов по умолчанию в вашем Global.asax, она должна выглядеть примерно так:

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

Причина: если вы поместите приложение MVC в подкаталог другого приложения, IISрассмотрите корень этого другого приложения вместо корня вашего приложения MVC.Если это поведение, которое вы хотите (маловероятно), то вам нужно изменить ваш Global.asax, чтобы учесть это:

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