ASP.NET MVC 3: перемещение приложения в виртуальный каталог. Что я должен изменить?

люди,

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

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

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

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

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

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

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

спасибо, все.

1 ответов


в IIS выберите виртуальный каталог и "преобразовать в приложение."Кроме того, если вы используете карту маршрута по умолчанию в своем глобальном.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. Если это поведение, которое вы хотите (маловероятно), вам нужно изменить свой глобальный.asax, чтобы принять, что в счет:

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