2014-11-20 172 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錯誤。您可以添加額外的路線,而不需要可能返回不同錯誤或響應的約束。具有約束條件的路線在沒有約束路線的路線之前進行評估,因此如果可能的話在更通用的路線之前匹配約束路線