使用无效/不支持的Content-Type(如text / plain)返回客户端请求的状态码4xx

时间:2012-08-24 14:58:48

标签: asp.net asp.net-web-api content-type

我使用ASP.NET Web API(包含在ASP.NET MVC 4中)实现了RESTful API。

当客户端使用不受支持的Content-Type(如“text / plain”)请求我的服务时,我会收到以下异常:

  

System.InvalidOperationException:没有MediaTypeFormatter可用   从具有媒体类型的内容中读取[...]类型的对象   'text / plain的'。

我的服务返回HTTP状态代码500,并记录/报告错误(我正在使用ELMAH)。

不幸的是,我找不到一种简单的方法来“捕获”这种不受支持的客户端请求。恕我直言,服务应返回状态代码,如404(未找到)或400(错误请求),因为错误不是服务器错误(但客户端错误)。

在另一个SO问题中,我找到了这个答案How do I configure the status code returned by my ASP.NET Web API service when the request has an unsupported Content-Type?,它通过实现自定义DelegatingHandler显示了一个可能的解决方案。

所以我的问题是:我错过了什么吗?是否存在针对此问题的ASP.NET Web API内置功能...

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:0)

您当然可以使用自己的自定义DelegatingHandler,也可以自定义HttpModule 它将实现IHttpModule并检查当前的http请求并验证请求。