“MapHttpRoute”和“MapRoute”的区别?

为什么使用“MapRoute”作为“默认”路由,而使用“MapHttpRoute”作为“DefaultApi”路由?

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 } ); 

如果您在ASP.NET之上使用Web API,那么它们最终都将在相同的底层ASP.NET路由表上运行 – 但是正确地指出,从用户angular度来看,您会调用两种不同的方法来注册路由。

路由是这样devise的,所以当在ASP.NET之外托pipe时,Web API将不必依赖于System.Web。

请记住,Web API并不在MVC,Web Forms之上,或者就ASP.NET而言。 它可以在Web上下文(ASP.NET)中进行托pipe,但也可以自行托pipe(控制台,WPF等),甚至托pipe在内存中(不使用端口,对轻量级端到端testing非常有用)。

MapRoute适用于“正常”的ASP.NET MVC控制器,而MapHttpRoute适用于Web API控制器。