我正在尝试为.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
目录中。
有人知道如何纠正此错误吗?谢谢!