我收到错误:
无法加载文件或程序集' Newtonsoft.Json'或其中一个 依赖。清单定义与程序集不匹配 参考
在我的ASP.NET MVC项目中添加WebApi控制器类之后。我的项目中也有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版本。
我读过这篇文章SignalR & WebApi - colliding Newtonsoft.Json references
但我不知道如何告诉webapi指出6.0.8版本。
答案 0 :(得分:3)
您可以使用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