没有实现WriteToStreamAsync方法

时间:2012-06-06 03:52:54

标签: json.net asp.net-mvc-4 asp.net-web-api

我正在使用版本canidate处理MVC4 api。我使用Content-Type进行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.NET\ASP.NET MVC 4\Assemblies\System.Net.Http.Formatting.dll

1 个答案:

答案 0 :(得分:0)

我在如何实现该方法时犯了一个错误。就像错误说的那样。 HttpContent应该将HttpContentHeaders改为:

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