2012-03-08 89 views
1

我正在使用帶有Web API的ASP.NET MVC 4 Beta--儘管我相信路由實現與.NET 4.0相關的這個問題沒有顯着差異。在下面的代碼中使用的MapHttpRoute與MVC 4一起提供,並且是基本上執行與MapRoute相同的功能的擴展方法,但是對於WebApi控制器。具有固定URI的ASP.NET路由不映射查詢字符串參數

我有一個遺留的web服務方法,我想創建一個ASP.NET路由。該方法目前有以下特徵:

NewsItemList ListNewsItems(string category, int maxResults) 

應該由他們的URI是這樣的請求被映射:

~/news?category=finance&maxResults=50 

都不是,一個或兩個查詢字符串參數可以存在。

我正在努力尋找一種方法來定義路線來支持此方法。

我使用MapHttpRoute來註冊路徑並將控制器和操作值的默認值適當地設置到控制器和方法。這裏有一些模板,我已經對這一結果的嘗試:

  • "news"捕捉"~/news"並正確綁定到的方法,但 不會捕捉與查詢字符串什麼。
  • "news{*query}不 允許的,因爲你不能有一個包羅萬象的,除非它是獨家 的URI段
  • "news{query}"捕捉查詢字符串,但並不 結合的方法

我m尋找一種前進的方式,這不是太激進的離開,因爲這是應用程序中的邊緣情況。該解決方案必須符合許多其他現有路線。理想情況下,我想避免重蹈Uri的重寫路徑。

回答

1

這是我在測試時遇到的一個問題。我錯誤地認爲HttpRequestBase.AppRelativeCurrentExecutionFilePath包含請求URI的查詢字符串部分。它不是。當我糾正我的模擬,一切開始工作。

相關問題