0

我有以下方法:的Web API - 通過雙參數,以獲得方法

[Route("GetEditorialRequestsByCoordinates/{lat:min(-90):max(90)}/{lng:min(-180):max(180)}")] 
[AutomapperExceptionApiFilterAttribute] 
public HttpResponseMessage GetEditorialRequestsByCoordinates(double lat, double lng) 
{ 

} 

,當我把它工作得很好......

GET /v1/api/request/GetEditorialRequestsByCoordinates/48/2 

但我想通過這樣的雙重價值:

GET /v1/api/request/GetEditorialRequestsByCoordinates/48.999/2.777 

我得到一個錯誤(404找不到)。看來,它無法通過路線找到合適的方法。 我曾試圖通過的方式來設置路線:

[Route("GetEditorialRequestsByCoordinates/{lat:double:min(-90):max(90)}/{lng:double:min(-180):max(180)}")] 

...但它也不起作用。

我該如何解決?

回答

5

只需在URL的末尾添加一個/就可以爲我糾正它。看起來路由引擎正在將其視爲2.777文件擴展名,而不是輸入參數。

此外,它看起來像您可以註冊一個自定義路由,當使用內置助手生成鏈接時,自動添加尾部斜線到URL的末尾。

他最簡單的解決方案是將下面一行添加到您的RouteCollection中。不知道你將如何與屬性做到這一點,但在你的RouteConfig,你只補充一點:

routes.AppendTrailingSlash = true; 

有關詳情,請here

最後所有的最大值和最小值功能適用於整數

最大:比最大的整數。 {x:max(10)}

我認爲它不適用於雙倍。

+0

問題的一半已解決,但不適用於範圍限制。我創建了另一個問題:http://stackoverflow.com/questions/36119037/webapi-min-max-double-for-routeattribute –