ASP.NET MVC 4 ApiController- und normale Controller-Routen

Ich habe ein Projekt, das ausschließlich für API-Anforderungen in unserer App verwendet wird, und wir verwenden ein ASP.NET MVC 4-Projekt. Wir haben einige Controller, die vom ApiController abgeleitet sind, und andere, die von der normalen Controller-Klasse abgeleitet sind. Das Problem ist, dass ich nicht das Standardrouting für die ApiController von haben möchteapi/XXXXX/. Ich möchte, dass für die ApiController dasselbe Routing verwendet wird wie für die Nicht-Api-Controller, und zwar{controller}/{action}/{id}. Ich habe versucht, die folgenden Routen hinzuzufügen

routes.MapHttpRoute(
    name: "Api",
    routeTemplate: "{controller}/{action}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

Dies wird es so machen, dass meine ApiController mit den normalen zugänglich sind{controller}/{action} routing aber "normale" controller sind nicht mehr erreichbar. Wenn ich das los werdeMapHttpRoute das Gegenteil passiert.

Gibt es eine Möglichkeit, ApiController und "normale" Controller über die gleichen URL-Routen erreichbar zu machen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage