我看到Webapi使用来自GlobalConfiguration的RouteCollection,MVC使用来自RouteTable。
我在这个链接中看到了一个解释: Difference between RouteTable.Routes and HttpConfiguration.Routes?
有些人可以提供更多信息或详细解释。
谢谢, 萨姆
答案 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。