2

默认的 MVC4 应用程序将带有一个RouteConfig看起来像这样的类:

public static void RegisterRoutes(RouteCollection routes) {
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

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

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

我的问题是,为什么MapHttpRoute?这是为新的 WebApi 功能设置路由,但我没有选择 WebApi 项目,只是一个普通的 MVC4 项目。普通的 MVC4 项目中似乎不需要 WebApi。

4

2 回答 2

4

我是 MVC 和 WebApi 背后的微软开发人员之一。我们在模板中为这两种技术提供路由注册的原因是我们希望让您更容易开始将 Web API 控制器添加到您的项目中。就像 MVC 一样,如果没有注册路由,那么您的Controller课程将无法工作。通过这两条路线,我们使入门体验对开发人员更加友好。

于 2012-10-01T15:18:54.617 回答
2

ASP.NET Web API 是 ASP.NET MVC 4 的一个特性。它是 ASP.NET Webstack 的一部分(喜欢 ;)这背后的想法是,如果你想为你的 RESTFUL 服务使用 HTTP 强类型模型,那么支持是盒子外面。并且应该是使用“常规”控制器处理 RESTFUL 请求的首选方式。

当您选择 Web API 项目模板时,MVC 唯一的变化是项目文件树结构。但是由于 Web API 是 MVC 的一部分,因此对常规 MVC 项目的依赖项的一些引用仍然存在。

如果 ASP.NET Web API 的路由注册困扰您,您可以随时将其删除。

于 2012-10-01T14:54:57.387 回答