【问题标题】:Difference between "MapHttpRoute" and "MapRoute"?“MapHttpRoute”和“MapRoute”的区别?
【发布时间】:2012-08-16 02:09:18
【问题描述】:

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

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

【问题讨论】:

  • 一个有趣的阅读,提出了这个主题:One (More) ASP.NET。该博客文章表明,WebAPI 的管道非常不同,因为它被设计为托管在 IIS 之外,而其他路由机制则不是。

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-10-14
      • 1970-01-01
      • 1970-01-01
      • 2015-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多