Owin / WebApi强制只接受application / json Accept和Content-Type标头

时间:2015-11-23 07:59:40

标签: c# asp.net asp.net-web-api owin

我需要将我的Owin自托管配置为仅接受application/json Accept和Content-Type标头。对于从客户端收到的任何其他Accept(例如application/xml),我想返回一个Http 415 Unsupported Media Type)。

我已尝试过所有解决方案,但似乎都没有。 http://www.strathweb.com/2013/06/supporting-only-json-in-asp-net-web-api-the-right-way/

我尝试清除HttpConfiguration中的所有格式化程序,只添加Json:

configuration.Formatters.Clear();
configuration.Formatters.Add(new JsonMediaTypeFormatter());

不起作用,它仍会为任何媒体类型返回200 Ok

我已尝试将DefaultContentNegotiator替换为我自己的JsonContentNegotiator,如上面链接中的示例所示,仍然没有运气。

我最终找到了解决方案,我自己在控制器中验证了标头。但这是一个非常难看的解决方案。有没有办法用webapi实现这一目标?

1 个答案:

答案 0 :(得分:1)

您是否尝试使用delegate handlers

 public static void Register(HttpConfiguration config)
    {
        config.MessageHandlers.Add(new MediaTypeDelegatingHandler());
    }

RelWithDebInfo

我还没有尝试过代码,但如果你还没有解决方案,那么你可以尝试一下。