3

WebGetAttribute と UriTemplate を使用して REST インターフェイスを公開することにより、可変数のキーと値のペアをサービスに渡そうとしています。やりたいこと:

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

クライアント側では、いくつかのキーを数回指定します。例:
hllp://localhost/MyService/Query/Select?field=Name&fieldsort=asc&field=ID

最初のアプローチは、次の UriTemplate を使用し、キーと値のペアを手動で分解することでした。

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

ただし、これはセグメントにのみ適用されるため、
hllp://localhost/MyService/Query/field=Val%3Dueのような URL は WCF によって自動的にデコードされ、"field=Val=ue" が Service メソッドに渡されます。

さらに悪いことに、二重にエンコードされた URL も完全にデコードされます:
hllp://localhost/MyService/Query/field=Val%253Due は再び「field=Val=ue」になります。

生のクエリ文字列にアクセスする方法はありますか? そうでない場合、別の方法で UriTemplate を拡張/使用して、動的な数のキーと値のペアを操作できますか?

4

1 に答える 1

4

WebOperationContext.Current を使用すると、生のクエリ文字列を取得できるようになりました。これは、自分で解析することになります。

于 2010-07-13T10:54:29.007 に答える