2010-07-08 32 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使我们能够获得原始查询字符串,现在将由我们自己解析。

相关问题