我需要将我的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实现这一目标?
答案 0 :(得分:1)
您是否尝试使用delegate handlers?
public static void Register(HttpConfiguration config)
{
config.MessageHandlers.Add(new MediaTypeDelegatingHandler());
}
和
RelWithDebInfo
我还没有尝试过代码,但如果你还没有解决方案,那么你可以尝试一下。