1

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

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

我读了这篇文章:在一个项目中混合 Web Api 和 ASP.Net MVC 页面,并希望实现@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 }
        );
    }
}
4

1 回答 1

2

看起来您已经可以使用它了,但是如果您希望在某个区域中使用您的 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();
于 2014-07-05T19:38:09.883 回答