2009-09-03 19 views
1

特殊な文字列パラメータでURLへのリクエストを取得し、私はRESTスタート・キットのプレビュー2でシンプルなRESTコレクションWCFサービスを書いたテンプレートプロジェクトは、その内部コレクションアイテムとして辞書コレクション・インスタンスでサービスクラスを提供します。各項目にはキーと値があります。RESTサービスは:

問題は鍵が含まれている場合ということである「と。」 'ProductA.Item1'のようなものであれば、特定のアイテムに対するクエリは機能しません。このアイテムへのURLのGETリクエストのようなものです:

http://localhost:1247/Service.svc/ProductA.Item1 

そのIISが私のRESTサービスのOnGetItem(文字列ID)メソッドにパラメータとしてxxx.xxx渡すのではなく資源としてURLを扱うように見えます。 'ProductAItem1'のようなドットなしのキーで内部コレクションを構築する '.Item1'の部分を削除すると、正常に動作します。

私も製品への属性のUriTemplate({ID})のWebGet私を変更しようとし、このカスタマイズされたURLを試してみました:

http://localhost:1247/Service.svc/Products(ProductA.Item1) 
    http://localhost:1247/Service.svc/Products('ProductA.Item1') 

それでも私は自分のコードに到達することはできませんOnGetItem(文字列ID)メソッドを。ドットのようなキーがなければ、カスタマイズされたURLもうまく動作します。

ドットまたは '。' URLには、IISサーバーによる特殊文字かどうか。特殊なcharなら、どうやってそれをエスケープしたり、ドットの中に文字列パラメータのようにしたりできますか?それとも、私のURLにドットを使うことができませんか?

答えて

0

私はあなたが持っている問題は、仕事をSystem.Web.Routingのクラスの方法によって引き起こされると考えています。どうやら、これはASP.NET MVCの人(see blog post)の問題でしたが、Phil Haackの記事によれば、この問題は修正されているはずです。たぶん、RESTスターターキットは新しいRouting DLLをまだ使用していませんか?

+0

これは非常に可能です。ルーティングサービスはOnGetItem()への呼び出しをブロックする可能性があります。私はASP.Netフォーラムで再チェックします。ありがとう! –