找不到方法:使用Newtonsoft.Json 10.0.2时的BaseJsonMediaTypeFormatter.get_SerializerSettings()

时间:2017-04-03 00:49:18

标签: json.net

我正在创建一个返回HttpResponseMessage的方法。我需要使用自定义JSON Formatter,如下所示:

    var jsonFormatter = new JsonMediaTypeFormatter();
    jsonFormatter.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
    jsonFormatter.SerializerSettings.Formatting = Formatting.Indented;
    jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
    IsoDateTimeConverter dateConverter = new IsoDateTimeConverter
    {
        DateTimeFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.fff'Z'"
    };
    jsonFormatter.SerializerSettings.Converters.Add(dateConverter);

当我使用Newtonsoft.Json版本=" 10.0.2"或" 10.0.1"和targetFramework =" net461",我得到以下例外:

Method not found: 'Newtonsoft.Json.JsonSerializerSettings System.Net.Http.Formatting.BaseJsonMediaTypeFormatter.get_SerializerSettings()

如果我降级到Newtonsoft.Json版本=" 9.0.1",那么它可以正常工作。但是,我们希望获得版本10的一些异步支持。

这是一个知道错误吗?有工作吗?

1 个答案:

答案 0 :(得分:1)

当服务器上的旧web.config具有绑定重定向到v8.0.0时,即使bin文件夹中存在v10.0.0,我也遇到此问题。

我改变了:

<dependentAssembly>
  <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0" />
</dependentAssembly>

为:

<dependentAssembly>
  <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
</dependentAssembly>

问题已解决。