Web Api已经使用相同的参数类型定义了名为“Get”的成员

时间:2014-02-19 15:30:05

标签: c# asp.net asp.net-mvc asp.net-web-api

public class UsersController : ApiController
{
    // GET api/companies/{company_id}/users/{user_id}
    public object Get(int company_id, int user_id)
    {
       ...
    }

    // GET api/companies/{company_id}/plants/{plant_id}/users
    public IEnumerable<object> Get(int company_id, int plant_id)
    {
       ...
    }
}

第一种方法应该返回公司的单个用户部分 第二种方法应该返回公司和工厂的用户部分列表

ERROR 类型'...'已经定义了一个名为'Get'的成员,其参数类型相同

是否有可能避免Web Api将第二个Get解释为重新定义?

如果看http://aspnetwebstack.codeplex.com/wikipage?title=Attribute%20routing%20in%20Web%20API 场景3中的位置使用[HttpGet(“...”)]符号

public class MoviesController : ApiController
{
    [HttpGet("actors/{actorId}/movies")]
    public Movie Get(int actorId) { }
    [HttpGet("directors/{directorId}/movies")]
    public Movie Get(int directorId) { }
}

但在我的情况下 [HTTPGET(...)] ERROR 'System.Web.Http.HttpGetAttribute'不包含带有1个参数的构造函数

1 个答案:

答案 0 :(得分:3)

我认为你必须为你的获取功能命名:

public class UsersController : ApiController
{
    // GET api/companies/GetByUser/{company_id}/{user_id}
    public object GetByUser(int company_id, int user_id)
    {
       ...
    }

    // GET api/companies/GetByPlanet/{company_id}/{plant_id}
    public IEnumerable<object> GetByPlanet(int company_id, int plant_id)
    {
       ...
    }
}