Asp.net mvc 如何在ASP.NET WebAPI MediaTypeFormatter中检索HTTP请求方法?

Asp.net mvc 如何在ASP.NET WebAPI MediaTypeFormatter中检索HTTP请求方法?,asp.net-mvc,json,asp.net-web-api,Asp.net Mvc,Json,Asp.net Web Api,我想在ASP.NET WebAPI函数返回JSON时抛出一个异常,其中值为IEnumerable,HTTP请求方法为GET- 我试图通过创建MediaTypeFormatter来实现这一点。我能做到吗?我还有别的办法吗?谢谢 比如: public class CustomFormatter : MediaTypeFormatter { public override Task WriteToStreamAsync(Type type, object value, Stream strea

我想在ASP.NET WebAPI函数返回JSON时抛出一个异常,其中值为IEnumerable,HTTP请求方法为GET-

我试图通过创建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();
        }
        ...
    }
}
可能是因为已添加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时,请求将有一个值。

可能是因为已经添加了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时,请求将有一个值