2014-11-20 119 views
0

我有以下限制:的Web API属性路由约束

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

如果我提出以下要求,我收到了405不允许的方法:

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

这有一定道理但响应消息是标准的“所请求的资源不支持http方法'GET'”。我想成为一名优秀的REST公民,但这个信息并没有给客户任何关于实际问题的指示。

有没有人有这种情况下的任何建议?有没有办法让我改变返回的标准信息?

注 - 我不想为任何405创建一个'catch all'处理程序。我已经看到了一些这些解决方案,但我正在寻找更多针对此特定路由属性的东西。

回答

0

您的路线受到长度限制,因此不匹配并被找到,因此出现405错误。您可以添加额外的路线,而不需要可能返回不同错误或响应的约束。具有约束条件的路线在没有约束路线的路线之前进行评估,因此如果可能的话在更通用的路线之前匹配约束路线