webapi动作超载

时间:2012-08-23 19:33:46

标签: asp.net-web-api asp.net-routing

这是我的行动

public AddressModel[] Get()
{
    return addresses.ToArray();
}

public AddressModel Get([FromUri]GetAddressModelById model)
{
    return Addresses.FirstOrDefault(x => x.Id == model.Id);
}
...
public class GetAddressModelById
{
    public Guid Id { get; set; }
}

网址看起来像这样

domain:port/api/controller
domain:port/api/controller/[guid]

,路由是默认路由。 当我运行这个时,我得到异常Multiple actions were found that match the request。我错过了什么工作?

2 个答案:

答案 0 :(得分:0)

尝试domain:port / api / controller / model = [guid]

如果你能这样做也会很好:

public AddressModel Get([FromUri] Guid模型) {  ... }

答案 1 :(得分:0)

您收到此错误的原因是,如果您请求domain:port / api / controller,我们无法决定是否将模型设置为null将其分发到Get()Get([FromUri]GetAddressModelById model)。在这种情况下,您有以下两个选项

  1. 使用普通Guid类型参数而不是类包装器
  2. 将您的复杂类型发布到正文中,而不是通过URI发送