4

私はこれに一日中費やしました、私は今かなり禿げています。

コントローラー:

[HttpPost]
public HttpResponseMessage AddSet(SetDto set)

[HttpPost]
[ActionName("copy")]
public HttpResponseMessage CopySet([FromUri]int[] ids)

順番にルート:

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


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

、およびcopyで呼び出します。私は何を間違っていますか? POST /api/set/copt/idsaddPOST /api/set

完全なエラー:

"exceptionMessage": "要求に一致する複数のアクションが見つかりました: \r\nSystem.Net.Http.HttpResponseMessage AddSet(App.Repository.Models.Dtos.SetDto) タイプ App.Service.Controllers.SetController\r\nSystem. Net.Http.HttpResponseMessage

タイプ App.Service.Controllers.SetController の CopySet(Int32[])",

4

2 に答える 2

5

のようなリクエストを行うと、上記のエラーが発生すると思いますPOST /api/set/copt/idsか?

Web API は、ルート変数名とアクション パラメーター名の一致について厳密です。

以下を実行してみてください(: FromUri の Name パラメーターは、ルート変数名をここのパラメーターにマップします...これはエイリアシングと呼ばれます):

[HttpPost]
[ActionName("copy")]
public HttpResponseMessage CopySet([FromUri(Name="id")]int[] ids)
于 2013-07-22T23:19:38.063 に答える