Asp.net web api 信号员及;WebApi-冲突Newtonsoft.Json引用

Asp.net web api 信号员及;WebApi-冲突Newtonsoft.Json引用,asp.net-web-api,signalr.client,Asp.net Web Api,Signalr.client,我有一个连接到SignalR 2.0后端的windows客户端,现在我正在尝试将其连接到ASP.NET Web API 2.1后端 我用来与web api通信的库依赖于Newtonsoft.Json 6.0.0.0,而Microsoft.AspNet.signar.Client 2.0.0.0似乎依赖于Newtonsoft.Json 4.5.0.0 由于这是一个windows客户端,dll文件最终位于同一目录中,并且磁盘上只会出现两个所需版本中的一个,这使得signalr客户端或HttpClie

我有一个连接到SignalR 2.0后端的windows客户端,现在我正在尝试将其连接到ASP.NET Web API 2.1后端

我用来与web api通信的库依赖于Newtonsoft.Json 6.0.0.0,而Microsoft.AspNet.signar.Client 2.0.0.0似乎依赖于Newtonsoft.Json 4.5.0.0

由于这是一个windows客户端,dll文件最终位于同一目录中,并且磁盘上只会出现两个所需版本中的一个,这使得signalr客户端或HttpClient无法加载其版本的Newtonsoft.Json dll文件

如果磁盘上有6.*版本,则发出信号错误:

  Could not load file or assembly 'Newtonsoft.Json, Version=4.5.0.0,
  Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its 
  dependencies. The located assembly's manifest definition does not match the 
  assembly reference.(Exception from HRESULT: 0x80131040)
是否可以让Signal使用较新版本的Newtonsoft,或者在同一解决方案中同时使用这两个版本

请记住,我对Nuget包装和Signer似乎使用的隐式引用非常陌生

解决方案:
我用版本6.0替换了我的signalR客户端库中的Newtonsoft引用,并将程序集重定向(Kiran Challa在下文中写道)添加到库的App.config以及可执行项目的App.config中,现在,两个库查找并加载相同的程序集。

Web API和SignalR是参考Json.net的4.5程序集版本构建的。如果您想使用Json.net的6.0版本,则需要在配置文件中添加程序集绑定重定向

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
      </dependentAssembly>

谢谢!我将signalR客户端库中的Newtonsoft引用替换为6.0版本,并将程序集重定向添加到库的App.config以及可执行项目的App.config,现在两个库查找并加载相同的程序集。