如何解决dotnet core web api中的Web API AmbiguousActionException?

问题描述 投票:0回答:1

我有两个Get方法。我想通过使用以下网址来访问它

但我试图称之为我正在追踪异常

AmbiguousActionException:匹配多个动作。以下操作匹配路由数据并满足所有约束:

     // GET api/values/5
        [HttpGet("{id}")]
        public ActionResult<string> Get(SomeEnum id)
        {
           //somecode
            return "value";
        }

        [HttpGet("{id}")]
        public ActionResult<string> Get(SomeEnum id,int status)
        {


//somecode
            return "value";
        }

有没有办法使用多个get方法来使用这样的路由

asp.net-web-api .net-core
1个回答
0
投票

ASP.NET核心提供的任何开箱即用的功能都无法帮助您解决问题。正如其中一条评论中所建议的那样,你应该将status参数设为nullable,并在action方法中使用它来决定接下来要做什么。像这样的东西:

[HttpGet("{id}")]
public ActionResult<string> Get(SomeEnum id,int? status)
{
    if(status == null)
    {    
        //perform usual logic which requires only id
    }
    else
    {
        //perform logic or call a method which requires both id and status
    }
    return "value";
}
© www.soinside.com 2019 - 2024. All rights reserved.