在Web API中发生404 Not Found时返回自定义消息

时间:2014-03-16 16:21:17

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

我已将config.Formatters.Remove(config.Formatters.XmlFormatter);添加到ASP.NET Web API项目中的WebApiConfig.cs的Register方法中。当发生404 Not Found异常时,这可以很好地返回JSON。我收到如下消息:

{"Message":"No HTTP resource was found that matches the request URI 'http://localhost:2034/api/dfdf'.","MessageDetail":"No type was found that matches the controller named 'dfdf'."}

是否可以覆盖此消息以返回自定义消息?如果是这样,它是如何完成的?我正在使用Web API 2.

1 个答案:

答案 0 :(得分:3)

看起来很简单,但有很多地方ASP.Net会自动创建404s(而不是你的控制器手动返回404响应)。

  • 没有匹配的路线。
  • 路线已匹配,但路线上未找到{controller}。
  • 找不到包含{controller}名称的类型。
  • 在所选控制器中找不到匹配的操作方法,因为没有操作方法以请求HTTP方法动词开始,或者没有找到IActionHttpMethodProviderRoute实现属性的操作方法或没有找到{action} name的方法或没有匹配{action的方法找到名字。

This文章介绍了如何实施使用典型IHttpControllerSelector生成自定义404 IHttpActionSelector的自定义ApiControllerHttpResponseMessage