70

为什么将“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 }
);
4

2 回答 2

65

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

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

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

于 2012-08-20T18:33:31.243 回答
29

MapRoute用于“普通” ASP.NET MVC 控制器,而MapHttpRoute用于 Web API 控制器。

于 2012-08-20T18:27:27.293 回答