我在ASP.NET Web API路由中遇到問題。具體而言,我想傳遞一個字符串參數,該參數爲空或在Uri中包含斜線。但不幸的是,這打破了路由。傳遞字符串作爲包含斜線的uri參數或爲空
我已經有一個合適的路線設置,如果我有一個正常的字符串,如「fubar」,這是匹配很好。我試圖傳遞字符串url編碼,但這不起作用。顯然問題在於某些http sys層已經解碼了字符串,意味着不是"fu%2fbar"
到達,而是"fo/bar"
- 這導致另一個路由。
此外,當我傳遞一個空字符串的URI是"api//..."
,這兩個/
合併和段被扔掉。
解決內部/
問題的一種方法是對Uri進行雙重編碼並在我的方法中對其進行解碼。但這似乎是一個非常糟糕的選擇,所以我正在尋找其他方法來解決這個問題。
將它作爲請求主體接受的參數是否更有意義? –
當我有一個字符串作爲資源的主要標識符時,這樣做是沒有意義的。還有一個可選的過濾器查詢字符串不應該在主體中。 – user1908061