Unterschied zwischen "MapHttpRoute" und "MapRoute"?

68

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 }
);
Dean
quelle
6
Eine interessante Lektüre, die dieses Thema anspricht: One (More) ASP.NET . Der Blog-Beitrag weist darauf hin, dass die Installation von WebAPI sehr unterschiedlich ist, da sie außerhalb von IIS gehostet werden soll, während dies bei anderen Routing-Mechanismen nicht der Fall war.
vcsjones

Antworten:

63

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).

Filip W.
quelle
29

MapRouteist für "normale" ASP.NET MVC-Controller MapHttpRoutegedacht, während es für Web-API-Controller gedacht ist.

Martin Devillers
quelle