在同一项目中配置MVC和API的路由

时间:2014-07-05 18:57:42

标签: c# asp.net asp.net-mvc-4 asp.net-apicontroller

我刚刚将现有的API项目合并到另一个现有的MVC项目中。 API控制器与MVC控制器具有相同的名称,但它们分别位于2个不同的命名空间中(分别为MyApp.Web.MyController和MyApp.API.MyController)。

现在,我真的不知道如何配置路由以便我可以访问API控制器:(

我读过这篇文章:Mixing Web Api and ASP.Net MVC Pages in One Project并希望达到@Mike Wasson所建议的目标,但我不知道如何配置路线。

这是我目前在RouteConfig.cs中所拥有的:

public class 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 }
        );
    }
}

1 个答案:

答案 0 :(得分:1)

看起来您已经有了它的工作,但是如果您希望在某个区域使用您的API控制器,您可以通过添加其他路径来启用它。

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.Routes.MapHttpRoute(
            name: "DefaultAreaApi",
            routeTemplate: "api/{area}/{controller}/{action}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

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


// Application_Start

GlobalConfiguration.Configure(WebApiConfig.Register);
AreaRegistration.RegisterAllAreas();