我有一个基于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的引用(我记不起哪个),但在我的引用文件夹中显示为错误。
答案 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)移除dnxcore50
中frameworks
部分下的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
以便在控制器内进行测试。
注意:我没有验证实例的功能,因此无法保证功能,因为它不支持!!
希望这能帮到你......