2012-03-08 4 views
1

ウェブAPIを使用してASP.NET MVC 4ベータ版を使用していますが、ルーティングの実装にこの質問に関連する.NET 4.0との大きな違いはないと思います。下記のコードで使用されているMapHttpRouteは、MVC 4に同梱されており、基本的にMapRouteと同じ機能を実行する拡張メソッドですが、WebApiコントローラでは機能しません。固定URIを持つASP.NETルートがクエリ文字列パラメータをマッピングしていない

私は、ASP.NETルートを作成したいという従来のウェブサービス方法があります。それは、そのURIは次のようになり要求によってマッピングされるべき

NewsItemList ListNewsItems(string category, int maxResults) 

::メソッドは、現在のシグネチャを以下ました

~/news?category=finance&maxResults=50 

どちらも、いずれかまたは両方のクエリ文字列パラメータが存在することができます。

私はこの方法をサポートするルートを定義する方法を見つけるのに苦労しています。

私はMapHttpRouteを使用して、コントローラとアクション値のルートを登録し、コントローラとメソッドのデフォルト値を適切に設定しました。ここで私は結果を試してみましたいくつかのテンプレートがあります:

  • "news""~/news"をキャプチャし、正しく方法に結合するが、 は、クエリ文字列を使って何をキャプチャしません。
  • "news{*query}あなたはキャッチオールを持つことができないので、それは に排他的でない限り、ウリセグメント
  • "news{query}"は、クエリ文字列をキャプチャしますが、私は「メソッド

にない バインドを行い許さ ではありませんこれはあまりにも根本的な出発点ではありません。ソリューションは、他の多くの既存のルートに適合しなければなりません。理想的には、ウリのライターの道を避けたいと思っています。

答えて

1

これは、私がテストしていた方法で問題になっていました。私は誤って、HttpRequestBase.AppRelativeCurrentExecutionFilePathにリクエストuriのクエリー文字列部分が含まれていると仮定しました。それはしません。モックを修正すると、すべてが機能し始めました。

関連する問題