冲突 Newtonsoft.Json DLL 版本与 signalR + WEBAPI

Conflict Newtonsoft.Json DLL version with signalR + WEBAPI

我收到错误:

Could not load file or assembly 'Newtonsoft.Json' or one of its dependencies. Manifest definition does not match the assembly reference.

将 WebApi 控制器 class 添加到我的 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 版本。

我读了这个postSignalR & WebApi - colliding Newtonsoft.Json references

但是不知道怎么让webapi指向6.0.8版本

您可以使用 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