“MapHttpRoute”和“MapRoute”之间的区别?

时间:2012-08-20 18:14:30

标签: asp.net asp.net-mvc-routing asp.net-web-api

为什么使用“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 }
);

2 个答案:

答案 0 :(得分:57)

如果在ASP.NET之上使用Web API,它们最终都会在相同的底层ASP.NET路由表上运行 - 但正如所指出的那样,从用户的角度来看,您可以调用两种不同的方法来注册路由。

路由设计是这样的,因此当在ASP.NET之外托管时,Web API不必依赖于System.Web。

请记住,Web API并不是位于MVC,Web窗体之上,或者根本就是ASP.NET。它可以托管在Web上下文(ASP.NET)中,但也可以自托管(控制台,WPF等),甚至可以托管在内存中(无需端口使用,对轻量级端到端测试很有用)。

答案 1 :(得分:27)

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