2016-09-30 4 views
1

я получаю ошибку:Конфликт Newtonsoft.Json DLL версии с signalR + WebAPI

Не удалось загрузить файл или сборку «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 версии.

Я прочитал этот пост SignalR & WebApi - colliding Newtonsoft.Json references

, но я не знаю, как сказать WebAPI, чтобы указать на версии 6.0.8.

+0

Связанный вопрос * очень старый * и не применяется. Добавьте соответствующие пакеты NuGet вместо добавления ссылок на сборки. NuGet разрешит все конфликты при установке пакетов. –

+0

Когда вы говорите о добавлении соответствующих пакетов NuGet, вы имеете в виду установку Newtonsoft.Json через NuGet? Поскольку я уже пробовал это и обновил его с помощью версии 9.0.0, и оба SignalR и WebApi сбой, потому что они не смогли найти сборку – Morgan

+0

И Json.NET, и SignalR. Сам SignalR - это еще один пакет NuGet. Сначала попробуйте с чистым проектом, иначе вам придется удалить любые перенаправления, которые вы уже добавили в app.config. –

ответ

1

Вы можете использовать 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

+0

К сожалению, это уже случай – Morgan

+0

Вы пробовали это [http://stackoverflow.com/a/12011221/6666799](http://stackoverflow.com/a/12011221/6666799) – Rabban

+0

не работает (нет пространства имен в конфигурации, допустимый путь и т. д.) – Morgan

Смежные вопросы