Ich habe einen WCF-Dienst, der Seite an Seite mit einer MVC2-Website lebt. Ich würde für den Dienst für meine URL mag so aussehen:MVC2 Routing mit WCF ServiceRoute: Html.ActionLink Rendering falsche Links!
http://localhost/projdir/Service
Die Website MVC in den Kinderschuhen steckt, so dass es nach wie vor von allen Controllern seine vorformulierten hat usw.
Der folgende Code funktioniert bei erster blick in 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
);
}
Der Dienst erscheint genau dort, wo ich beschrieben und funktioniert wie angekündigt. Groß.
Allerdings habe ich gerade bemerkt, dass das Ändern meines Codes auf diese Weise alle meine ActionLink
ändert. Zum Beispiel erscheint die Registerkarte „About“ auf dem MVC-Website nun wie folgt aus:
http://localhost/projdir/Service?action=About&controller=Home
Das ist offensichtlich falsch ist (es sollte http://localhost/projdir/Home/About/
sein).
Wenn ich die ServiceRoute
Addition unter den Standard MapRoute()
Aufruf verschieben, dann bekomme ich einen fehlenden Controller-Fehler. (Tatsächlich bekomme ich einen "StructureMapControllerFactory gab keine Instanz eines Controllers" Fehler, weil ich mit StructureMap verdrahtet bin, duh, es ist kein Controller zu beginnen.)
Interessanterweise scheint es nur zu beeinflussen die Ausgabe von Html.ActionLink()
. Ich kann manuell http://localhost/projdir/Home/About/
eingeben und auf die richtige Seite gelangen.
Welcher schrecklich offensichtliche Neulingfehler mache ich?
Möglicherweise ähnliche? http://stackoverflow.com/questions/1470997/html-actionlink-construct-wrong-link-when-a-non-mvc-route--added – roufamatic