默认的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。
答案 0 :(得分:4)
我是MVC和WebApi背后的Microsoft开发人员之一。我们在模板中对两种技术进行路由注册的原因是我们希望您更容易开始向项目添加Web API控制器。就像MVC一样,如果没有注册路由,那么你的Controller
类就无法工作了。通过使用这两条路线,我们可以让您的入门体验更加适合开发人员。
答案 1 :(得分: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的路由注册困扰您,您可以随时将其删除。