Microsoft.AspNetCore.Routing.Matching.AmbiguousMatchException: запрос соответствует нескольким конечным точкам.
Вы можете попытаться включить или отключить действие для данного запроса на основе строки запроса, которую вы передается путем реализации пользовательского ActionMethodSelectorAttribute , как показано ниже.
[AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]
public class CheckProductCodeAttribute : ActionMethodSelectorAttribute
{
public string QueryStingName { get; set; }
public bool CanPass { get; set; }
public CheckProductCodeAttribute(string qname, bool canpass)
{
QueryStingName = qname;
CanPass = canpass;
}
public override bool IsValidForRequest(RouteContext routeContext, ActionDescriptor action)
{
StringValues value;
routeContext.HttpContext.Request.Query.TryGetValue(QueryStingName, out value);
if (QueryStingName == "" && CanPass)
{
return true;
}
else
{
if (CanPass)
{
return !StringValues.IsNullOrEmpty(value);
}
return StringValues.IsNullOrEmpty(value);
}
}
}
Применить к вашим действиям
[HttpGet]
[CheckProductCode("", true)]
[CheckProductCode("ProductCode", false)]
public IEnumerable<Product> GetProducts()
{
return _Productcontext.GetProducts();
}
[HttpGet]
[CheckProductCode("", false)]
[CheckProductCode("ProductCode", true)]
public Product GetProduct([FromQuery(Name = "ProductCode")]string ProductCode)
{
return _Productcontext.GetProductByProductCode(ProductCode);
}