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

问题描述 投票:1回答:1

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

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

  • Microsoft.asp net core.app
  • Microsoft.net core.app

项目2.目标框架是.NET Framework 4.6.1。它是一个使用NEST / ElasticSearch获取数据的类库。我正处于紧张状态,所以我基本上从一个运行得很好的.NET Framework 4.5.1项目复制这个项目。 Nuget套餐包括:

  • NEST 1.7.1
  • elastic search.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 Framework 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中没有这两个项目。
c# elasticsearch asp.net-core json.net nest
1个回答
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>
© www.soinside.com 2019 - 2024. All rights reserved.