如何将Web API组件添加到我的MVC 6应用程序?

时间:2015-11-07 05:15:41

标签: asp.net asp.net-mvc asp.net-core-mvc

我有一个基于ASP.NET 5 Web应用程序模板的新创建的MVC 6应用程序,我想在此项目中包含一些Web API功能。添加API/Controllers文件夹并在其中添加[api]控制器很容易,但我无法配置Web API,当我尝试添加以下代码时:

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

我收到HttpConfiguration未知类型的编译错误。我已经尝试添加对Web API的引用(我记不起哪个),但在我的引用文件夹中显示为错误。

1 个答案:

答案 0 :(得分:0)

评论太大了,所以把它放在这里:

如果您创建MVC6应用程序,您可以从Microsoft.AspNet.Mvc.Controller继承您的Api控制器,而不需要System.Web.Http.ApiController,因为mvc和webapi都在同一个屋檐下。

您可以在Migrate Models and Controllers部分

中查看更多内容

使用入门:WebApi in MVC6

修改

您可以尝试以下步骤来解决System.Web.Http.HttpConfiguration

1)在project.json文件中添加对以下依赖项的引用(您也可以添加为Nuget包)

"dependencies": { 
  ... 
  ... 
  "Microsoft.AspNet.WebApi": "5.2.3" 
},

2)从框架组件部分添加对System.Web的引用 这应该在" project.json"否则手动执行

"frameworks": {
        "dnx451": {
            "frameworkAssemblies": {    //This section will be added
                "System.Web": "4.0.0.0" //This reference will be added
            }
}

3)移除dnxcore50frameworks部分下的project.json,因为System.Web本身在DNX Core 5.0中不可用。它也在intellisense中显示。

"frameworks": {
        "dnx451": {
            "frameworkAssemblies": {
                "System.Web": "4.0.0.0"
            }
        },
        "dnxcore50": { } //Remove this node. Remove comma(,) in above line too!!
},

4)清洁和重建解决方案。希望这应该解决参考。

我已经在新的MVC 6应用程序中执行了这些步骤,并且能够正确地实例化HttpConfiguration以便在控制器内进行测试。

注意:我没有验证实例的功能,因此无法保证功能,因为它不支持!!

希望这能帮到你......