我刚刚将Asp.Net Web Api 2.2项目上传到生产服务器,我收到了标题中的错误。
在我的Web.config中,我已经有了这个:
<dependentAssembly>
<assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.2.2.0" newVersion="5.2.2.0" />
</dependentAssembly>
文件确实存在于bin中。是什么导致这种情况?
我的所有Asp.Net Web API文件都是最新的,并显示5.2.2作为版本。它在我的开发机器上工作正常。
答案 0 :(得分:28)
在Copy Local
和true
程序集的属性中将System.Web.Http
设置为System.Web.Http.WebHost
,然后重新部署该程序包。
如果这不能解决您的问题,请尝试重新安装NuGet包。这有望纠正破坏的依赖关系。从程序包管理控制台,运行以下命令:
Update-Package Microsoft.AspNet.WebApi -reinstall
确保同时安装System.Web.Http.WebHost
。
答案 1 :(得分:7)
对我来说,来自&#34; Solution Explorer&#34;我检查了&#34; System.Web.Http&#34;在项目引用中,这是5.2.3.0所以,在web.config中,我改变了:
<bindingRedirect oldVersion="0.0.0.0-5.2.2.0" newVersion="5.2.2.0" />
到
<bindingRedirect oldVersion="0.0.0.0-5.2.2.0" newVersion="5.2.3.0" />
然后建立。它对我有用!
答案 2 :(得分:2)
在web.cofig中添加以下配置解决了我的问题。
<dependentAssembly>
<assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.5.0" />
</dependentAssembly>
答案 3 :(得分:0)
如果您在GAC中有一个具有不同版本的程序集,它将始终加载,而不是bin文件夹中的那个。
答案 4 :(得分:0)
我遇到了同样的错误。它是由我用来部署应用程序的脚本引起的,该脚本用以前的版本替换了Web.config。 Web.config指定了错误的System.Web.Http版本。删除该步骤解决了问题。
答案 5 :(得分:0)
我通过以下步骤解决了这个问题:
一键发布无法替换正确版本的dll,或者远程站点一直在使用该文件。
答案 6 :(得分:0)
答案 7 :(得分:-4)
另一种方法,不需要新建或更新/重新安装Nuget是在config.web中执行以下操作:
对于您遇到问题的DLL,请执行以下操作:
<bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="5.2.2.0">
我今天遇到了一个问题,这个小小的调整解决了它......