0

ASP.Net MVC 4 Web API フレームワークで複数の引数を取る Web API コントローラーにカスタム アクションを実装したいと考えています。

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

次のような Web ブラウザーで URL を呼び出すことができます。

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

ただし、これは機能しませんでした。

WebAPIルーティングなど、他に構成する必要があるものはありますか? 現在、デフォルトを使用していますWebApiConfig.cs

前もって感謝します

4

1 に答える 1

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 ルーティングの詳細については、こちらを参照してください。

于 2013-03-01T00:23:22.513 に答える