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


68

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

6
一个有趣的读物提出了这个主题:一个(更多)ASP.NET。该博客文章建议WebAPI的管道设计有很大不同,因为它被设计为在IIS外部托管,而其他路由机制则没有。
vcsjones

Answers:


63

如果在ASP.NET之上使用Web API,则它们最终都将在相同的基础ASP.NET路由表上进行操作-但是,正如正确指出的那样,从用户角度来看,您调用了两种不同的方法来注册路由。

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

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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.