新的带有Webapi的MVC4项目包含WebApiConfig和RouteConfig

本文关键字:包含 WebApiConfig RouteConfig 项目 MVC4 Webapi | 更新日期: 2023-09-27 17:50:04

我创建了一个新的基于MVC4 Webapi的项目,在应用程序开始文件夹中有几个文件。我注意到在RouteConfig.cs文件

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

和WebApiConfig.cs

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{action}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

现在从我可以告诉他们都在做大致相同的事情,除了一个使用。maproute和另一个。maphttproute的参数在符号上略有不同。这两种不同的路由是否适用于应用程序的不同方面?他们需要同时出现在两个地方吗?如果是/不是,哪个优先?

我的发现WebApiConfig.cs与RouteConfig.cs的区别

然而,它说的是一个是为Asp。Net路由,另一个用于WebApi路由,但我没有看到这两种路由类型在使用上的区别。

新的带有Webapi的MVC4项目包含WebApiConfig和RouteConfig

我觉得很奇怪。我刚刚在Visual Studio 2013中创建了一个新的Web API项目,我的WebApiConfig.cs看起来像这样:

config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

注意,routeTemplate中没有{action}组件。这是因为Web API中的动作是由与请求一起使用的HTTP动词决定的。

在RouteConfig中配置的是由MVC使用的,在那里你可以显式地提供控制器和动作。