不实现 WriteToStreamAsync 方法



我正在使用发布Canidate处理MVC4 api。当我使用内容类型执行 GET 时我得到的错误:application/json 我收到此错误:类型为"JsonNetFormatter"的媒体类型格式化程序不支持写入,因为它没有实现 WriteToStreamAsync 方法。

我相信我是!

public Task WriteToStreamAsync(Type type, object value, Stream stream, HttpContent content, TransportContext transportContext)
    {
        var task = Task.Factory.StartNew(() =>
        {
            var settings = new JsonSerializerSettings()
            {
                NullValueHandling = NullValueHandling.Ignore,
            };
            string json = JsonConvert.SerializeObject(value, Formatting.Indented,
                                                      new JsonConverter[1] { new IsoDateTimeConverter() });
            byte[] buf = System.Text.Encoding.Default.GetBytes(json);
            stream.Write(buf, 0, buf.Length);
            stream.Flush();
        });
        return task;
    }

我看过一个覆盖此方法的示例,但是我收到一个错误,指出没有合适的方法可以覆盖。 我猜这是System.Net.Http.Formatting的版本控制问题.dll但是我已经仔细检查了版本,它看起来不错:

// Type: System.Net.Http.Formatting.MediaTypeFormatter
// Assembly: System.Net.Http.Formatting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
// Assembly location: C:Program Files (x86)Microsoft ASP.NETASP.NET MVC 4AssembliesSystem.Net.Http.Formatting.dll

我在实现该方法的方式上犯了一个错误。 就像错误说的那样。HttpContent 应该被 HttpContentHeaders 更改为:

public override Task WriteToStreamAsync(Type type, object value,
                                    Stream stream,
                                    HttpContentHeaders content,
                                    TransportContext transportContext)

相关内容

  • 没有找到相关文章

最新更新