我已经使用 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 内置功能...