对于客户端请求中不支持的Content-Type(例如text/plain),返回4xx状态码。

4

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

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

System.InvalidOperationException: No MediaTypeFormatter is available to read an object of type [...] from content with media type 'text/plain'.

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

不幸的是,我没有找到一种简单的方法来“捕获”这种类型的不受支持的客户端请求。我认为,服务应该返回类似于404(未找到)或400(错误请求)这样的状态码,因为错误不是服务器错误(而是客户端错误)。

在另一个SO问题中,我找到了这个答案如何配置ASP.NET Web API服务在请求具有不受支持的Content-Type时返回的状态码?,它展示了通过实现自定义DelegatingHandler可能的解决方案。

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

很好的观点,史蒂夫。我已经更新了我的帖子,以使我的问题更加清晰。 - janjonas
2个回答


0

你可以使用自己的自定义DelegatingHandler,也可以创建自定义的HttpModule,实现IHttpModule接口并检查当前的http请求以验证请求。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接