我試圖設計我的WebAPI控制器重載Get方法,將根據用戶提供的參數進行選擇。在某些情況下,我可以正確地工作,但是當我在一個方法上有多個收集參數時,即使我沒有指定兩個集合,我的控制器也不能再選擇正確的路由。如何正確重載WebAPI 2控制器和多個收集參數?
例如以下設置作品:
[RoutePrefix("data/stock")]
public class StockDataController
: ApiController {
private readonly IDataProvider<StockDataItem> _dataProvider;
public StockDataController() {
_dataProvider = new StockDataProvider();
}
[Route("")]
public IEnumerable<StockDataItem> Get([FromUri] string[] symbols) {
// Return current stock data for the provided symbols
}
[Route("")]
public IEnumerable<StockDataItem> Get([FromUri] string[] symbols, DateTime time) {
// Return stock data at a specific time for the provided symbols
}
}
選擇方法1
GET 2
http://server/data/stock/?symbols[]=GOOG&symbols[]=MSFT
的方法選擇GET http://server/data/stock/?symbols[]=GOOG&symbols[]=MSFT&time=2015-01-01
一旦我添加以下過載,那麼一切都打破了:
[Route("")]
public IEnumerable<dynamic> Get(
[FromUri] string[] symbols, [FromUri] string[] fields) {
// Return specified stock data fields for the specified symbols
}
我希望下面的要求來選擇方法3:
GET http://server/data/stock/?symbols[]=GOOG&symbols[]=MSFT&fields[]=Price&fields[]=Volume
相反,我收到錯誤消息:
Multiple actions were found that match the request: Get on type StockDataController Get on type StockDataController
是否有可能有多個收集參數你的方式?如果是這樣,我在這裏做錯了什麼?
你有沒有試圖消除'RoutePrefix',然後添加特定的路線('data/stock/{symbols}'和'data/stock/{symbols}/{fields}')? –