在System.Web.Http 5.2.2中缺少DependencyResolver

时间:2014-09-19 07:11:24

标签: .net asp.net-web-api odata ninject.web.mvc

我们的项目正在使用asp.Net Web Api和部分要求,以便用户通过Excel查看数据,我们想介绍OData Feed。

所以我安装了oData包:

<package id="Microsoft.AspNet.WebApi.OData" version="5.3.0" targetFramework="net45" />

通过这样做,升级了以下包:

-  <package id="Microsoft.AspNet.WebApi.Client" version="5.2.0" targetFramework="net45" />
-  <package id="Microsoft.AspNet.WebApi.Core" version="5.2.0" targetFramework="net45" />
+  <package id="Microsoft.AspNet.WebApi.Client" version="5.2.2" targetFramework="net45" />
+  <package id="Microsoft.AspNet.WebApi.Core" version="5.2.2" targetFramework="net45" />
-  <package id="Newtonsoft.Json" version="5.0.6" targetFramework="net45" />
+  <package id="Newtonsoft.Json" version="6.0.4" targetFramework="net45" />

我稍后修改了我的WebApiConfig以添加OData路由(但我认为这是无关紧要的,这是我不提供代码的原因)。重建失败多次,所以我决定按照多个博客帖子的建议重新启动Visual Studio。

然后所有构建正常,我在项目上启动调试器。我得到以下异常:

An exception of type 'System.IO.FileLoadException' occurred in Ninject.Web.Common.dll but was not handled in user code

Additional information: 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)

然后我查看Ninject配置类以查看以下行:

GlobalConfiguration.Configuration.DependencyResolver = new NinjectDependencyResolver(kernel);

显示红色的“DependencyResolver”(那是Resharper)并说它无法解决它。看看对象浏览器,我确实找不到它了。

基本上我将Microsoft.AspNet.WebApi从5.2.0升级到5.2.2并丢失了DependencyResolver并与Ninject兼容。

你知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:5)

好像我找到了解决方案。

ninject和aspnet的5.2.2之间根本不兼容

问题是安装oData将一些AspNet软件包升级到5.2.2但忘记了其他一些软件包。 当我将所有Microsoft.AspNet.WebApi *软件包都收到5.2.2时,问题就会消失。

我希望这仍然有助于其他人...