Autofac error: Could not load file or assembly 'System.Web.Http, Version=5.2.0.0,...' My project is Owin WebApi2 SelfHost
Autofac error: Could not load file or assembly 'System.Web.Http, Version=5.2.0.0,...' My project is Owin WebApi2 SelfHost
我有一个使用 Microsoft.AspNet.WebApi.OwinSelfHost 的简单项目。这是一个 Owin 自托管 WebApi 2 project.The 项目非常类似于:-
https://github.com/attilah/AngularJSAuthentication
我唯一的不同是我的安全模块在单独的程序集中(一切都与上述项目类似)。我使用 Autofac 来解决我的依赖关系。
这个项目在没有 Autofac 的情况下工作。但是一旦我尝试使用相应的安全模块和 Autofac 设置我的项目,我所面临的就是这个错误:-
Could not load file or assembly 'System.Web.Http, Version=5.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
我的配置从这个线程中得到了很大的启发:-
Dependency injection not working with Owin self-hosted Web Api 2 and Autofac
此外,我发现其他人正在为 Autofac 的这个依赖性错误而苦苦挣扎,并且能够通过重新安装 Microsoft.AspNet.WebApi.WebHost:
来解决类似的问题
GlobalConfiguration.Configure() not present after Web API 2 and .NET 4.5.1 migration
但这对我不起作用我不知道为什么。我试过从头开始重新安装所有东西也无济于事。除了 Autofac 在重新安装时还有几个权限问题之外。
有人遇到过这个错误吗?请帮忙。谢谢!
在@user998660 在above thread.
的评论的帮助下,我设法解决了这个依赖问题
我做的是:
- 我在项目的引用中右键单击了程序集 System.Web.Http。
- 我注意到我的项目引用的程序集版本是
5.2.3.0
- 从上面的错误我知道 Autofac 正在尝试引用 System.Web.Http 版本
5.2.0.0
。我需要一种方法来告诉我的应用程序使用更新版本 5.2.3.0
而不是 5.2.0.0
.
这是我需要添加到 Web.config 的 <assemblyBinding>
部分的内容:
<dependentAssembly>
<assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-5.2.0.0" newVersion="5.2.3.0" />
</dependentAssembly>
打开解决方案的托管 nuget 包,并安装最新的 Microsoft Asp.net Web Api 2.2 并解决了我的问题。
有时,.nuget 恢复可能会出现问题。尽管在成功签入后,在 .nuget.config 文件中将 disableSourceControlIntegration 设置为 false 可以解决此问题。
添加键="disableSourceControlIntegration" 值="false"
我有一个使用 Microsoft.AspNet.WebApi.OwinSelfHost 的简单项目。这是一个 Owin 自托管 WebApi 2 project.The 项目非常类似于:-
https://github.com/attilah/AngularJSAuthentication
我唯一的不同是我的安全模块在单独的程序集中(一切都与上述项目类似)。我使用 Autofac 来解决我的依赖关系。
这个项目在没有 Autofac 的情况下工作。但是一旦我尝试使用相应的安全模块和 Autofac 设置我的项目,我所面临的就是这个错误:-
Could not load file or assembly 'System.Web.Http, Version=5.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
我的配置从这个线程中得到了很大的启发:-
Dependency injection not working with Owin self-hosted Web Api 2 and Autofac
此外,我发现其他人正在为 Autofac 的这个依赖性错误而苦苦挣扎,并且能够通过重新安装 Microsoft.AspNet.WebApi.WebHost:
来解决类似的问题GlobalConfiguration.Configure() not present after Web API 2 and .NET 4.5.1 migration
但这对我不起作用我不知道为什么。我试过从头开始重新安装所有东西也无济于事。除了 Autofac 在重新安装时还有几个权限问题之外。
有人遇到过这个错误吗?请帮忙。谢谢!
在@user998660 在above thread.
的评论的帮助下,我设法解决了这个依赖问题我做的是:
- 我在项目的引用中右键单击了程序集 System.Web.Http。
- 我注意到我的项目引用的程序集版本是
5.2.3.0
- 从上面的错误我知道 Autofac 正在尝试引用 System.Web.Http 版本
5.2.0.0
。我需要一种方法来告诉我的应用程序使用更新版本5.2.3.0
而不是5.2.0.0
.
这是我需要添加到 Web.config 的 <assemblyBinding>
部分的内容:
<dependentAssembly>
<assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-5.2.0.0" newVersion="5.2.3.0" />
</dependentAssembly>
打开解决方案的托管 nuget 包,并安装最新的 Microsoft Asp.net Web Api 2.2 并解决了我的问题。
有时,.nuget 恢复可能会出现问题。尽管在成功签入后,在 .nuget.config 文件中将 disableSourceControlIntegration 设置为 false 可以解决此问题。 添加键="disableSourceControlIntegration" 值="false"