1

ASP.NET WebAPI関数が値がIEnumerableでHTTPリクエストメソッドがGETであるJSONを返す場合、例外をスローしたいと思います。できれば、最上位が配列である場合に生成されるJSONを停止します

MediaTypeFormatterを作成してこれを実行しようとしました。私はこれを行うことができますか?これを行うための別の方法はありますか?ありがとう。

何かのようなもの:

public class CustomFormatter : MediaTypeFormatter
{
    public override Task WriteToStreamAsync(Type type, object value, Stream stream, HttpContentHeaders contentHeaders, TransportContext transportContext)
    {
        // Retrieve value for isGetRequest somehow...
        if (value is IEnumerable && isGetRequest)
        {
            throw new InvalidOperationException();
        }
        ...
    }
}
4

1 に答える 1

8

GetPerRequestFormatterInstanceメソッドが追加され、オーバーライドできるため、可能です。

public class CustomFormatter : MediaTypeFormatter
{
    private HttpRequestMessage _request;

    private CustomFormatter(HttpRequestMessage request)
    {
        _request = request;
    }

    public override MediaTypeFormatter GetPerRequestFormatterInstance(Type type, HttpRequestMessage request, MediaTypeHeaderValue mediaType)
    {
        return new CustomFormatter(request);
    }
    ..........

そうすれば、 の時点でWriteToStreamAsyncrequest に値が入ります。

于 2012-08-08T08:54:02.917 に答える