1

我已升级从 Visual Studio 2012 开始的 MVC 4 和 Web API 项目以使用 Web API 2(NuGet 包 5.0+)。

我添加了程序集清单以重定向到较新的库,如下所示:

<dependentAssembly>
  <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
<dependentAssembly>
  <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>

这些包被设置为在构建时复制到本地 bin 目录,并且我已经验证了在本地计算机和我们用于测试正确程序集的远程 Web 服务器上的 bin/ 文件夹中。远程计算机上的 GAC 中不存在 Web API 库的副本。

然而,System.Net.Http.Formatting 仍然声称在向应用程序发出请求时它没有找到正确的版本。

Could not load file or assembly System.Net.Http.Formatting, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 or one of its dependencies. The located assembly's manifest definition does not match the assembly reference.

谁能解释为什么由于明显不匹配而仍然存在程序集绑定问题?

4

1 回答 1

0

解决了。

显然,AutoFac 试图使用旧版本的 System.Web.Http (4.0.0.0)。幸运的是,AutoFac 的创建者最近发布了一个更新的 Web API 2 集成包:

http://www.nuget.org/packages/Autofac.WebApi2/

升级到 AutoFac.WebApi2 并删除 System.Net.Http.Formatting 的绑定重定向(来自原始问题)后,一切正常!

于 2013-11-14T23:05:05.743 回答