找不到方法:“无效System.Net.Http.Formatting.BaseJsonMediaTypeFormatter.set_SerializerSettings(Newtonsoft.Json.JsonSerializerSettings)”

时间:2018-06-27 14:04:14

标签: c# asp.net owin

我正在尝试为.NET Framework Owin WebAPI项目创建集成测试。

我创建了一个TestStartup类,该类从我的API项目继承了Startup类,以便可以覆盖某些IoC注册。但是,在大多数情况下,它仅调用基本方法。一种这样的方法配置HttpConfiguration上的SerializerSettings设置,但是在调用包含代码的方法时会引发错误。

  

System.MissingMethodException:'找不到方法:'Void System.Net.Http.Formatting.BaseJsonMediaTypeFormatter.set_SerializerSettings(Newtonsoft.Json.JsonSerializerSettings)'。

    private void ConfigureFormatters()
    {
        var formatter = HttpConfig.Formatters.JsonFormatter;
        formatter.SerializerSettings = new GoCardlessJsonSerializerSettings();
    }

GoCardlessSerializerSettings如下:

public sealed class GoCardlessJsonSerializerSettings : Newtonsoft.Json.JsonSerializerSettings
{
    public GoCardlessJsonSerializerSettings()
    {
        ContractResolver = new DefaultContractResolver
        {
            NamingStrategy = new SnakeCaseNamingStrategy()
        };
        NullValueHandling = NullValueHandling.Ignore;
    }
}

看看其他SO问题/答案,我的印象是与Newtonsoft.Json版本不匹配,但是我所有的项目都使用nuget软件包v11.0.0.2。

测试项目app.config

<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>

API项目web.config

  <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>

据我所见,所有相关的DLL都位于我的测试项目的Debug\bin目录中。

有人知道如何纠正此错误吗?谢谢!

0 个答案:

没有答案