Newtonsoft冲突.带有signalR + WEBAPI的Json DLL版本

本文关键字:Json DLL 版本 WEBAPI 冲突 带有 signalR Newtonsoft | 更新日期: 2023-09-27 18:09:54

我得到了错误:

无法加载文件或程序集Newtonsoft。Json'或其依赖关系。清单定义与程序集不匹配参考。

将WebApi控制器类添加到我的ASP。. NET MVC项目。我也有SignalR在我的项目。两者都在使用Newtonsoft。Json,但似乎他们引用的不是同一个版本。

SignalR使用6.0.8版本,而错误告诉我MapHttpRoute:

    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
        RouteTable.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}");
    }

尝试加载4.5版本。

我读了这篇文章WebApi碰撞Newtonsoft。Json引用

但是我不知道如何告诉webapi指向6.0.8版本

Newtonsoft冲突.带有signalR + WEBAPI的Json DLL版本

您可以使用AssemblyBinding重定向到您安装的Newtonsoft。Json组装。只需在Web.config

中添加
</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.8" newVersion="6.0.8" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

这会将所有错误版本的调用重定向到您安装的6.0.8版本