1

我在创建可以消除两个 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

现在它们都产生 500 错误,因为这两种方法都匹配为两个 URI 的可能操作。

这是我的路线:

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

虽然我知道在这个简单的示例中,GetMany可以更改方法以将空 id 列表视为对所有人的请求,但在更复杂的情况下可能并非如此。

请注意,我使用的是 MVC 4 Web API,Visual Studio 2010。

4

1 回答 1

3

这是动作选择的一个已知问题。

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

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

于 2013-01-30T19:57:47.523 回答