当我有程序集时,WebAPI 发现引用错误
Posted
技术标签:
【中文标题】当我有程序集时,WebAPI 发现引用错误【英文标题】:WebAPI found reference error when I have the assembly 【发布时间】:2014-08-07 11:31:56 【问题描述】:我在我的解决方案中创建了一个 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>
【问题讨论】:
您确定您的项目“参考”文件夹中有 System.Web 吗? @JohanHjalmarsson 是的,我用一张图片更新了我的问题,我们可以在其中看到该项目中存在的一些参考资料 @Lucas_Santos 你能检查你的 web.config 是否有一些程序集重定向吗? 你安装了吗Microsoft.AspNet.WebApi.WebHost
很确定你可以 nuget Install-Package Microsoft.AspNet.WebApi.WebHost
我在我的项目中卸载了一些 nuget 包,包括 MVC,然后重新安装。解决。谢谢大家帮助我。
【参考方案1】:
强制重新安装 WebAPI 可以完成这项工作:
update-package microsoft.aspnet.webapi -reinstall
【讨论】:
对我来说 -reinstall 开关是关键......我运行了更新包,直到我脸色发青,它一直告诉我没有要应用的更新......这是有道理的,但我找不到如何强制它重新安装...... -reinstall 是如此直观,但我错过了...... lol 对我来说,这应该被标记为 answere。像魅力一样工作谢谢 有这个确切的问题,这个答案解决了它,谢谢! 万岁! 我使用 sidewaffle 来获得一个 angular + web api 项目模板,从项目模板构建代码时出现了这 3 个确切的错误,我做了很多工作来解决这个问题 - 认为我在一些某些 NuGet 包的更高版本的类型...运气不太好直到这个答案 - 是的,它对我有用。【参考方案2】:我做到了:
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
这解决了我的问题。
【讨论】:
【参考方案3】:我在我的项目中卸载了一些 nuget 包,包括 MVC,然后重新安装。解决。谢谢大家帮助我。
【讨论】:
【参考方案4】:更新您的 NuGet 包。为我工作。
【讨论】:
【参考方案5】:请尝试通过在nugetmanager
控制台上运行以下命令来更新您的软件包
update-package microsoft.aspnet.webapi.webhost -reinstall
【讨论】:
【参考方案6】:特别是对我来说,我从 TFS 下载了有人在工作的解决方案并得到了错误
System.Web.Http.HttpConfiguration' does not contain a definition for 'MapHttpAttributeRoutes' and no extension method 'MapHttpAttributeRoutes'
我是关于继续重新安装 web api,但我知道过去的经验是,您安装项目的顺序的依赖链最终可能会有点戏剧。
JSON 时好时坏,因为有时我看到更新的 JSON 强制并卸载另一个软件包的新版本并安装旧版本,因为它认为“它最了解”。
对我来说,通过 nuget 更新 JSON 是我所要做的。
【讨论】:
【参考方案7】:1) 检查您的解决方案文件夹 packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45 是否有 System.Web.Http.dll 可用。它应该在那里。如果不可用,请从任何其他正在运行的项目包文件夹中复制它。 2) 从您的项目中删除对 System.Web.Http.dll 的引用。 3) 通过指向新的 .dll 添加新的引用,即 packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Web.Http.dll
【讨论】:
以上是关于当我有程序集时,WebAPI 发现引用错误的主要内容,如果未能解决你的问题,请参考以下文章
在 bigquery 中创建数据集时,谷歌 App 引擎出错