2013-03-01 68 views
0

我想在一個Web API控制器中實現一個自定義操作,該控制器通過ASP.Net MVC 4 Web API框架接受多個參數。ASP.Net Web API自定義操作需要多個參數?

public class APIRepositoryController : ApiController 
{ 
    ... 
    [HttpGet, ActionName("retrieveObservationInfo")] 
    public ObservationInfo retrieveObservationInfo(
        int id, 
        String name1, 
        String name2) 
    { 
     //...do something... 
     return ObservationInfo; 
    } 
    ... 
} 

,這樣我可以調用一個URL的網頁瀏覽器,如:

"http://[myserver]/mysite/api/APIRepository/retrieveObservationInfo?id=xxx&name1=xxx&name2=xxx" 

然而,這卻從來沒有工作過。

還有什麼我需要配置,例如WebAPI路由?目前我只使用默認的WebApiConfig.cs

在此先感謝

回答

4

默認的Web API將基於HTTP動詞,而不是動作名派遣的行爲,你的情況:

GET http://[myserver]/mysite/api/APIRepository/?id=xxx&name1=xxx&name2=xxx 

派遣基於動作名稱(像你想)你需要的默認路由之前,添加以下路由:

routes.MapHttpRoute(
    name: "ActionApi", 
    routeTemplate: "api/{controller}/{action}/{id}", 
    defaults: new { id = RouteParameter.Optional } 
); 

請注意,您目前不能(至少在沒有黑客)相結合的動詞爲基礎的動作名路由在一個控制器中可靠。您可以閱讀有關Web API routing here的更多信息。

+0

太棒了!非常感謝! – alextc 2013-03-01 00:44:48

相關問題