WebAPI2和MVC5路由配置

时间:2014-04-29 03:03:40

标签: c# asp.net-web-api asp.net-mvc-routing asp.net-mvc-5 config

我编写了一个运行良好的C#ASP.net MVC5互联网应用程序,我可以使用Person模型进行CRUD操作。

我添加了一个使用实体框架的WebAPI2控制器,但在尝试浏览任何WebAPI控制器方法时遇到错误。

WebAPI2控制器名为PersonAPIControllerGetpeople方法在方法上方有// GET api/PersonAPI条评论,但在浏览此方法时,我收到此错误:

  

无法找到资源。

这是路由问题吗?

我有RouteConfigWebApiConfig。这两个配置需要合并吗?

以下是RouteConfig的内容:

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

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

以下是WebApiConfig的内容:

public static void Register(HttpConfiguration config)
{
    config.MapHttpAttributeRoutes();

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

目前,这是我的Application_Start方法:

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();
    RouteConfig.RegisterRoutes(RouteTable.Routes);
}

是否需要在WebApiConfig.Register()之前添加RouteConfig.RegisterRoutes(RouteTable.Routes)代码行?

如果是,那么需要添加到WebApiConfig.Register()方法的参数是什么?

提前致谢

修改

以下是使用的确切代码:

GlobalConfiguration.Configure(WebApiConfig.Register);

2 个答案:

答案 0 :(得分:1)

确保在Register(HttpConfiguration config)之前致电RegisterRoutes(RouteCollection routes)。顺序很重要。

答案 1 :(得分:0)

致电/ api / personapi而不是/ api / personapi / getpeople