0

release canidate を使用して MVC4 API に取り組んでいます。Content-Type: application/json で GET を実行すると、次のエラーが表示されます。タイプ '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
4

1 に答える 1

0

メソッドの実装方法を間違えました。エラーが言ったように。HttpContent は、次のように変更された HttpContentHeaders である必要があります。

public override Task WriteToStreamAsync(Type type, object value,
                                    Stream stream,
                                    HttpContentHeaders content,
                                    TransportContext transportContext)
于 2012-06-06T15:47:41.407 に答える