Web API属性路由约束

时间:2014-11-20 21:23:29

标签: asp.net-web-api2 asp.net-web-api-routing

我有以下约束:

[Route("api/currencies/{currencyCode:length(3)}", Name="GetCurrencyByCode")]
public HttpResponseMessage Get(string currencyCode)

如果我提出以下请求,我会收到405方法不允许:

http://localhost:7475/api/currencies/ZSHK

这确实有意义但是响应消息是标准的"请求的资源不支持http方法' GET'"。我想成为一名优秀的REST公民,但是这条消息并没有给客户任何关于实际问题的指示。

有没有人对此方案有任何建议?我有办法更改返回的标准消息吗?

注意 - 我不想创建一个“全部捕获”的内容。任何405的处理程序。我已经看过其中一些解决方案,但我正在寻找更具针对性的路由属性。

1 个答案:

答案 0 :(得分:0)

您的路线受长度约束,因此无法匹配并找到,因此405错误。您可以添加一个没有可能返回不同错误或响应的约束的其他路由。具有约束的路由在没有约束的路由之前进行评估,因此如果可能的话,它将在更通用的路径之前匹配约束路由。