使用Json.NET/NEST/Elasticsearch在ASP.NET Core应用中找不到方法错误

时间:2018-09-07 02:23:42

标签: c# elasticsearch asp.net-core json.net nest

我在一个解决方案中有两个项目,分别是Project 1和Project 2。

项目1。目标框架是.NET Core 2.1。这是一个带有控制器和视图的MVC项目。它引用了Project2。Nuget软件包包括:

  • Microsoft.AspNetCore.App
  • Microsoft.NETCore.App

项目2。目标框架是.NET Framework 4.6.1。这是一个使用NEST / ElasticSearch获取数据的类库。我的时间很紧,所以我基本上是从运行良好的.NET Framework 4.5.1项目中复制该项目。 Nuget软件包包括:

  • NEST 1.7.1

  • ElasticSearch.Net 1.7.1

  • Newtonsoft.Json 7.0.1

  • Microsoft.AspNet.WebApi.Client 5.2.3

项目2:

中的错误

enter image description here

如果使用与旧的4.5.1项目完全相同的代码,我不确定为什么会出现此错误。唯一真正的区别是它与现在的.​​NET Core 2.1项目在同一解决方案中。

我考虑过的事情:

  • 我尝试将旧项目从.NET Framework 4.5.1升级到.NET 框架4.6.1。而且仍然可以正常运行,所以我认为这与之无关。
  • 我的直觉是ASP.NET Core项目使用Newtonsoft.Json 10/11,而.NET Framework 4.6.1项目使用Newtonsoft.Json 7.0.1,这在某种程度上引起了问题。但是,如果是这样,解决方案是什么?将Project 2升级到Newtonsoft.Json 10/11还需要您更新NEST和ElasticSearch.Net,这会引入大量重大更改。理想情况下,我不必过多地尝试Project 2中的代码。我真的很想让它工作,但将Project 1保留在ASP.NET Core 2.1中,而在旧的.NET Framework中没有两个项目。

1 个答案:

答案 0 :(得分:0)

看来您的直觉是正确的!您有DLL HELL

的轻微情况

您可以做一些事情,这里是article您可以选​​择

我个人喜欢编辑app.config文件,所以我建议。

<dependentAssembly>  
  <assemblyIdentity name="YOUR JSON ASSEMBLY HERE"  
    publicKeyToken="32ab4ba45e0a69a1"  
    culture="en-us" />  
  <bindingRedirect oldVersion="0.0.0.0" newVersion="11.0.0.0" />  
</dependentAssembly>