如何将Web Api Controller添加到MVC项目?

时间:2015-10-15 10:16:07

标签: asp.net-mvc asp.net-web-api2

我创建了一个默认的MVC 5 Web应用程序,并希望允许客户端调用该API。由于原因太长而无法进入,我真的需要将API作为应用程序的一部分。我首先在名为 FooController 的默认解决方案中添加了一个额外的控制器,该解决方案返回带有一些虚拟数据的View。这应该与Web API无关,但我想确保至少可以添加一个MVC控制器。我可以运行解决方案,当浏览到http://localhost:54110/Foo我的虚拟数据被返回时

在单独的解决方案中,我能够使用Getting Started with ASP.NET Web API 2来创建API。我可以使用http://localhost:47503/api/products/2来调用api,它会向我发送一个json文件。一切都很好。

我回到了我的第一个项目并重复了创建Web API2的步骤,但是当我尝试通过http://localhost:54110/api/products/2调用API时,我得到了404.显然我遇到了路由问题。

这是我的Application_Start,我在其中添加了最后一行来调用GlobalConfiguration,因为这是Web API示例中使用的内容。

    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
        GlobalConfiguration.Configure(WebApiConfig.Register);
    }

这是来自WebApiConfig

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

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

知道这是被调用的,因为调试器正在破坏这个方法。关于我做错了什么的任何想法?有没有办法在http://localhost:54110/api/products/2之后点击 ENTER 时跟踪发生的事情?

0 个答案:

没有答案
相关问题