RouteTable.Routes vs HttpConfiguration.Routes?

时间:2014-04-30 07:18:23

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

我看到Webapi使用来自GlobalConfiguration的RouteCollection,MVC使用来自RouteTable。

我在这个链接中看到了一个解释: Difference between RouteTable.Routes and HttpConfiguration.Routes?

有些人可以提供更多信息或详细解释。

谢谢, 萨姆

1 个答案:

答案 0 :(得分:4)

山姆,

RouteTable是asp.net/System.Web使用的路由的底层结构。

使用ASP.NET(这是Visual Studio中的默认模板)在IIS上运行时,路由将写入路由表,WebHost用于在ASP.Net/System.Web和Web API之间进行填充。在这种情况下,路由将写入RouteTable。

但Web API也可以在WCF自主主机或Owin自主主机中运行(在控制台应用程序,服务中或托管在您的应用程序代码中)。在这些情况下,ASP.NET(或更准确地说)system.web不会用作托管层。这两个主机不提供路由抽象,Web API实现自己的路由。

为了保持用户代码在不同主机之间的可移植性,将路由写入单独的集合,然后每个主机对其进行不同的使用。

作为旁注,这也是使用HttpContext的原因。如果您计划在无IIS主机中运行Web API,则不建议在Web API中使用.Current。