Exc。:无法加载文件或程序集' Newtonsoft.Json,Version = 6.0.0.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed'或其中一个依赖项

时间:2018-03-29 12:59:28

标签: c# asp.net-web-api com json.net

我正在使用Microsoft.AspNet.WebApi.Client(版本5.2.4)。 在我的项目(版本11.0.2)中引用了Newtonsoft.Json。

我正在尝试获取网络服务调用的结果,如下所示:

...

using (var client = new HttpClient())
{
      ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

      client.DefaultRequestHeaders.Accept.Clear();
      client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

      var content = new StringContent($"grant_type=refresh_token&client_id=sfd34tgregge&client_secret=345534535&refresh_token={refreshToken}", Encoding.UTF8, "application/x-www-form-urlencoded");

      var response = await client.PostAsync(url, content);

      if (response.IsSuccessStatusCode)
      {
        var getAccessTokenResult = await response.Content.ReadAsAsync<GetAccessTokenResult>();

            ...
      }
 }

 ...

当我从C#应用程序引用此DLL时,我可以毫无问题地执行此代码。

当我通过COM调用相同的方法时,我收到以下错误:

Exception: Could not load file or assembly 'Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The system could not find the specified file.

我们通过以下方式修改了可通过COM访问的类:

[ProgId("MyDll")]
[ClassInterface(ClassInterfaceType.AutoDual)]
public class MyDll : IMyDll
{
    ...
}

我们还在AssemblyInfo.cs中设置了以下内容:

[assembly: ComVisible(true)]

app.config包含以下内容:

<?xml version="1.0" encoding="utf-8"?>
<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-11.0.0.0" newVersion="11.0.0.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"/></startup></configuration>

为什么会收到此错误消息?为什么这会尝试使用Newtonsoft.Json的6.0.0.0版本?为什么在从.NET应用程序调用它时这是有效的,而在通过COM调用时却没有? 我还能检查什么?

1 个答案:

答案 0 :(得分:0)

引用它的应用程序是否具有相同版本的Newtonsoft.json AND 相同/兼容版本的.NET

值得检查您的packages.config文件和您的包文件夹。

相关问题