在MVC和Web API上注册路由的方式有什么区别?

1 c# asp.net-mvc asp.net-mvc-routing asp.net-web-api asp.net-web-api-routing

在我的MVC和WebAPI应用程序中,我看到了两种不同的路由方式.

  • 一个用于调用RegisterRoutes并传递RouteTable.Routes的MVC
  • 一个用于Web API,它调用CustomizeConfig并传递GlobalConfiguration.Configuration.

对于WebAPI:

WebApiConfig.CustomizeConfig(GlobalConfiguration.Configuration);

public static void Register(System.Web.Http.HttpConfiguration config)
{
    config.Routes.MapHttpRoute(
        name: ApiControllerOnly,
        routeTemplate: "api/{controller}");
}
Run Code Online (Sandbox Code Playgroud)

对于MVC:

RouteConfig.RegisterRoutes(RouteTable.Routes);

public static void RegisterRoutes(System.Web.Routing.RouteCollection routes)
{
    routes.MapRoute("DefaultRedirect",
        "",
        new { controller = "Home", action = "Index" });
}
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下我在一个或另一个方法调用中注册路由有什么不同吗?另外,为什么一个人使用这种方式.

Yis*_*zer 6

MVC路由向ASP.NET(system.web)路由集合注册.但是,Web API可以在system.web之上的IIS中运行,也可以在不更改代码的情况下作为自托管运行.

因此,Web API具有不同的注册机制,它可以在引擎盖下使用system.web路由,或者在使用自托管时使用它自己的路由系统(开箱即用支持WCF自主机或Owin主机).

还有一个小差异,Web API路由需要命名路由,而MVC路由则不需要.