WCF:如何将可变数量的参数传递给启用WebGet的服务

时间:2010-07-08 14:32:50

标签: wcf parameters parameter-passing webget

我们试图通过使用WebGetAttribute和UriTemplate公开REST接口,将可变数量的键值对传递给我们的服务。我们想做什么:

[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自动解码,“field = Val = ue”将传递给Service方法。

更糟糕的是,双重编码的URL也得到了完全解码:
hllp://本地主机/为MyService /查询/字段=缬氨酸%253Due 再次成为“field = Val = ue”。

有没有办法访问原始查询字符串?如果没有,我们可以用另一种方式扩展/使用UriTemplate,使用动态数量的键值对吗?

1 个答案:

答案 0 :(得分:3)

使用WebOperationContext.Current使我们能够获取原始查询字符串,现在将由我们自己解析。