Warum "MapRoute" für "Standard" -Routing verwenden, während "MapHttpRoute" für "DefaultApi" -Routing verwendet wird?
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}"
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
Antworten:
Wenn Sie die Web-API zusätzlich zu ASP.NET verwenden, arbeiten beide letztendlich mit derselben zugrunde liegenden ASP.NET-Routentabelle. Wie jedoch richtig ausgeführt, rufen Sie aus Benutzersicht zwei verschiedene Methoden zum Registrieren der Route auf.
Das Routing wurde so konzipiert, dass sich die Web-API beim Hosting außerhalb von ASP.NET nicht auf System.Web verlassen muss.
Beachten Sie, dass die Web-API überhaupt nicht auf MVC, Web Forms oder ASP.NET installiert ist. Es kann im Webkontext (ASP.NET) gehostet werden, kann aber auch selbst gehostet werden (Konsole, WPF usw.) oder sogar im Speicher gehostet werden (ohne Portverwendung, nützlich für einfache End-to-End-Tests).
quelle
MapRoute
ist für "normale" ASP.NET MVC-ControllerMapHttpRoute
gedacht, während es für Web-API-Controller gedacht ist.quelle