我在我的解决方案中创建了一个MVC 4 Web API应用程序,但我现在遇到2个错误,我需要一些帮助。
' System.Web.Http.HttpConfiguration'不包含的定义 ' MapHttpAttributeRoutes'没有扩展方法 ' MapHttpAttributeRoutes'接受第一个类型的参数 ' System.Web.Http.HttpConfiguration'可以找到(你错过了吗? 使用指令或程序集引用?)
以下代码
发生此错误文件:WebApiConfig.cs(位于App_Start文件夹)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
using System.Web;
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
另一个,在Global.asax
中' System.Web.Http.GlobalConfiguration'不包含定义 为'配置'
文件:Global.asax.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Http.WebHost;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}
更新
通过Nuget安装WebAPI WebHost(@ sa_ddam213的建议)之后,它解决了一些问题,但现在运行我的应用程序时出现了这个错误
无法加载文件或程序集&System; Net.Http'或其中一个 依赖。定位程序集的清单定义没有 匹配程序集引用
Web.config文件具有程序集
<dependentAssembly>
<assemblyIdentity name="System.Web.Http" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-5.2.0.0" newVersion="5.2.0.0"/>
</dependentAssembly>
答案 0 :(得分:95)
强制重新安装Web API可以完成这项工作:
update-package microsoft.aspnet.webapi -reinstall
答案 1 :(得分:12)
我做了:
get-project <project_name> | uninstall-Package Microsoft.AspNet.WebApi.WebHost -force
然后重新安装(特定版本与其他项目中的版本一致)
get-project <project_name> | install-Package Microsoft.AspNet.WebApi.WebHost -Version 5.2.2
这解决了我的问题。
答案 2 :(得分:7)
我在我的项目中卸载了一些nuget包,包括MVC,然后重新安装。解决。谢谢大家的帮助。
答案 3 :(得分:6)
更新您的NuGet包。为我工作。
答案 4 :(得分:5)
请尝试在nugetmanager
控制台
update-package microsoft.aspnet.webapi.webhost -reinstall
答案 5 :(得分:1)
特别是对我来说,我从TFS下载了一些人在工作解决方案并得到了错误
System.Web.Http.HttpConfiguration' does not contain a definition for 'MapHttpAttributeRoutes' and no extension method 'MapHttpAttributeRoutes'
我关于继续重新安装web api,但我知道过去的经验,您安装项目的顺序的依赖关系链最后可能会有点剧。
JSON很受欢迎,因为有时我看到更新的JSON强制并卸载了另一个软件包的新版本并安装了旧版本,因为它认为“它最清楚。”
对我而言,通过nuget UPDATE JSON 是我必须做的。
答案 6 :(得分:0)
1)检查解决方案文件夹packages \ Microsoft.AspNet.WebApi.Client.5.2.3 \ lib \ net45是否有System.Web.Http.dll可用。应该在那里。如果不可用,请从任何其他运行的项目包文件夹中复制它。 2)从您的项目中删除System.Web.Http.dll的引用。 3)通过指向package \ Microsoft.AspNet.WebApi.Client.5.2.3 \ lib \ net45 \ System.Web.Http.dll
的新.dll添加新引用