Tengo un servicio WCF que vive en paralelo con un sitio web de MVC2. Me gustaría que mi URL para el servicio a tener este aspecto:Enrutamiento MVC2 con WCF ServiceRoute: Html.ActionLink representa enlaces incorrectos!
http://localhost/projdir/Service
El sitio MVC está en su infancia por lo que todavía tiene todos sus controladores de caldera etc.
El código siguiente funciona en primer vistazo en 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
);
}
El servicio aparece justo donde lo describí y funciona como se anuncia. Estupendo.
Sin embargo, acabo de notar que ordenar mi código de esta manera cambia todos mis ActionLink
. Por ejemplo, la pestaña "Acerca de" en el sitio MVC ahora aparece como esto:
http://localhost/projdir/Service?action=About&controller=Home
Esto es obviamente incorrecto (debe ser http://localhost/projdir/Home/About/
).
Si muevo la adición ServiceRoute
debajo de la llamada predeterminada MapRoute()
, entonces me sale un error de controlador faltante. (En realidad me sale un "StructureMapControllerFactory no arrojó una instancia de un controlador de" error, porque estoy conecté con StructureMap, duh, que no es un controlador para empezar.)
Curiosamente, sólo parece estar afectando la salida de Html.ActionLink()
. Puedo escribir manualmente en http://localhost/projdir/Home/About/
y llegar a la página correcta.
¿Qué error tan obvio de principiante estoy cometiendo?
Posiblemente relacionado? http://stackoverflow.com/questions/1470997/html-actionlink-construct-wrong-link-when-a-non-mvc-route-is-added – roufamatic