加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-web-api – SignalR&WebApi – 碰撞Newtonsoft.Json

发布时间:2020-12-15 23:12:45 所属栏目:asp.Net 来源:网络整理
导读:我有一个连接到SignalR 2.0后端的 Windows客户端,现在我试图使它连接到ASP.NET Web API 2.1后端. 我用于与网络api进行通信的库依赖于Newtonsoft.Json 6.0.0.0,但Microsoft.AspNet.SignalR.Client 2.0.0.0似乎依赖于Newtonsoft.Json 4.5.0.0. 由于这是一个Win
我有一个连接到SignalR 2.0后端的 Windows客户端,现在我试图使它连接到ASP.NET Web API 2.1后端.

我用于与网络api进行通信的库依赖于Newtonsoft.Json 6.0.0.0,但Microsoft.AspNet.SignalR.Client 2.0.0.0似乎依赖于Newtonsoft.Json 4.5.0.0.

由于这是一个Windows客户端,所以dll文件最终位于同一目录中,只有两个必需版本中的一个将最终在磁盘上,使得signalr-client或HttpClient无法加载其版本的Newtonsoft.Json DLL文件.

SignalR错误如果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)

是否可能使SignalR使用较新版本的Newtonsoft或能够在同一解决方案中使用这两个版本?

请记住,我非常新的Nuget包装和SignalR似乎使用的隐含参考…

解:
我更换了我的signalR客户端库版本6.0中的Newtonsoft引用,并将Kiran Challa下面的程序集重定向添加到库的App.config以及可执行项目的app.config中,现在这两个库都查找并加载相同的组件.

解决方法

Web API& SignalR是参考4.5组装版本的Json.net构建的.如果要使用6.0版本的Json.net,则需要在配置文件中添加装配绑定重定向.
<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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读