MVC2 Routing with WCF ServiceRoute: Html.ActionLink отображает неверные ссылки!
У меня есть сервис WCF, который живет бок о бок с веб-сайтом MVC2. Я хотел бы, чтобы мой URL для службы выглядел так:
http://localhost/projdir/Service
Сайт MVC находится в зачаточном состоянии, поэтому у него все еще есть свои стандартные контроллеры и т. Д.
Следующий код работает на первый взгляд в global.asax:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.Add(new ServiceRoute("Service", new ServiceHostFactory(),
typeof(MyService)));
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index",
id = UrlParameter.Optional } // Parameter defaults
);
}
Сервис появляется именно там, где я описал и работает как рекламируется. Отлично.
Тем не менее, я только что заметил, что порядок моего кода таким образом меняет все моиActionLink
«S. Например, вкладка «О программе» на сайте MVC теперь выглядит так:
http://localhost/projdir/Service?action=About&controller=Home
Это явно неверно (должно бытьhttp://localhost/projdir/Home/About/
).
Если я переедуServiceRoute
сложение ниже значения по умолчаниюMapRoute()
позвоните, тогда я получаю ошибку пропавшего контроллера. (На самом деле я получаю сообщение «StructureMapControllerFactory не вернул экземпляр контроллера», потому что я подключен к StructureMap, да, это не контроллер с самого начала.)
Интересно, что это только влияет на результатHtml.ActionLink()
, Я могу ввести вручнуюhttp://localhost/projdir/Home/About/
и попасть на правильную страницу.
Какую ужасно очевидную ошибку новичка я делаю?