1

2つのGetメソッドを明確にするルートまたはその他の構成の作成に問題があります。サンプルクラスは次のとおりです。

public class UsersController : ApiController

   public User[] GetMany([FromUri]int[] id)
   {
      // returns all users requested by id
   }

   public User[] GetAll()
   {
      // returns all users
   }

}

myhost/api/usersにマップしたいのですがGetAll、にmyhost/api/users?id=123マップしたいのですがGetMany

現在、両方のメソッドが両方のURIの可能なアクションとして一致しているため、両方とも500エラーが発生します。

これが私のルートです:

        routes.MapHttpRoute(
            name: "AllUsersRoute",
            routeTemplate: "api/users",
            defaults: new { },
            constraints: new { }
        );

この単純な例では知っていGetManyますが、空のIDリストをすべての要求として扱うようにメソッドを変更できますが、より複雑なシナリオではそうではない場合があります。

注:私はMVC 4 Web API、VisualStudio2010を使用しています。

4

1 に答える 1

3

これは、アクションの選択に関する既知の問題です。

http://aspnetwebstack.codeplex.com/workitem/821

http://aspnetwebstack.codeplex.com/workitem/322

于 2013-01-30T19:57:47.523 に答える