2010-07-08 36 views
2

我們試圖通過使用WebGetAttribute和UriTemplate公開REST接口,將可變數量的鍵值對傳遞給我們的服務。我們想要做什麼:WCF:如何將可變數量的參數傳遞到啓用WebGet的服務

[WebGet(UriTemplate="/Query/Select?{query}"] 
Response Query(string query); 

在客戶端我們要指定某些鍵幾次,如:
hllp://本地主機/爲MyService /查詢/選擇字段=名稱& fieldsort = ASC &字段= ID

我們的第一種方法是使用下面的UriTemplate和手動分解鍵值對:

[WebGet(UriTemplate="/Query/{*query}"] 
ResponseQuery(string query); 

卜牛逼這只是適用於等等之類
hllp網址://本地主機/爲MyService /查詢/場=瓦爾%3Due 得到由WCF自動解碼和「域=瓦爾= UE」將被傳遞到服務方法。

更糟糕的是,雙編碼的URL得到完全解碼,太:
hllp://本地主機/爲MyService /查詢/場=瓦爾%253Due 變爲 「域=瓦爾= UE」 一次。

有什麼辦法來訪問原始查詢字符串?如果不是,我們能否以其他方式擴展/使用UriTemplate,以使用動態數量的鍵值對?

+0

但是,您如何將這些參數傳遞給您的服務方法? – Nicolas 2011-03-14 22:49:36

回答

3

使用WebOperationContext.Current使我們能夠獲得原始查詢字符串,現在將由我們自己解析。

相關問題