J'ai un service WCF qui vit côte à côte avec un site web MVC2. Je voudrais que mon URL pour le service à ressembler à ceci:Routage MVC2 avec WCF ServiceRoute: Html.ActionLink rendant les liens incorrects!
http://localhost/projdir/Service
Le site MVC est à ses débuts il a encore tous ses contrôleurs etc. boilerplate
Le code suivant fonctionne à premier coup d'oeil dans 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
);
}
Le service apparaît juste où je l'ai décrit et fonctionne comme annoncé. Génial.
Cependant, je viens de remarquer que commander mon code de cette façon change tous mes ActionLink
. Par exemple, l'onglet "À propos" sur le site MVC apparaît maintenant comme ceci:
http://localhost/projdir/Service?action=About&controller=Home
Ceci est évidemment incorrect (il devrait être http://localhost/projdir/Home/About/
).
Si je déplace l'ajout ServiceRoute
sous l'appel par défaut MapRoute()
, une erreur de contrôleur est manquante. (En fait, je reçois une erreur "StructureMapControllerFactory n'a pas retourné une instance d'un contrôleur", parce que je suis câblé avec StructureMap, duh, ce n'est pas un contrôleur pour commencer.)
Fait intéressant, cela ne semble affecter la sortie de Html.ActionLink()
. Je peux taper manuellement http://localhost/projdir/Home/About/
et arriver à la bonne page.
Quelle erreur de débutant horriblement évidente je fais?
Peut-être lié? http://stackoverflow.com/questions/1470997/html-actionlink-construct-wrong-link-when-a-non-mvc-route-is-added – roufamatic