如何取回在ASP.NET的WebAPI MediaTypeFormatter HTTP请求方法?(H

2019-10-17 03:32发布

我想抛出异常时的ASP.NET的WebAPI函数返回JSON其中值是一个IEnumerable和HTTP请求的方法是GET - 希望停止任何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();
        }
        ...
    }
}

Answer 1:

它是可能的, 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);
    }
    ..........

所以,如果你这样做,那么在时间WriteToStreamAsync ,请求将有一个值。



文章来源: How do I retrieve the HTTP request method in an ASP.NET WebAPI MediaTypeFormatter?