Маршрут не найден, и функция ExecuteBindingAsync пользовательской привязки HttpParameterBinding не вызывается

#asp.net-web-api2 #asp.net-web-api-routing

Вопрос:

Мне нужно передать дату в метод действия веб-Api. Чтобы дополнить это, я создал пользовательскую привязку и атрибут пользовательского параметра.

Пользовательский атрибут параметра-это:

 public class DateTimeParameterAttribute : ParameterBindingAttribute {  public string DateFormat { get; set; }   public bool ReadFromQueryString { get; set; }    public override HttpParameterBinding GetBinding(  HttpParameterDescriptor parameter)  {  if (parameter.ParameterType == typeof(DateTime))  {  var binding = new DateTimeParameterBinding(parameter)  {  DateFormat = DateFormat,  ReadFromQueryString = ReadFromQueryString  };   return binding;  }   return parameter.BindAsError("Expected type DateTime");  } }  

И это фактический метод действия контроллера, который нужно вызвать:

 [ApiAuthorize] [RoutePrefix("api/Hol")] public class FeriadosController : ApiController {  [HttpPost]   [Route("Country/{country:int}/Dates/{start:datetime}/{end:datetime}")]  public object GetHolidaysByDates(int country,  [DateTimeParameter(DateFormat = "yyyy-MM-dd")]  DateTime start,  [DateTimeParameter(DateFormat = "yyyy-MM-dd")]  DateTime end)  {  return Repositorio.Data.Feriado.Get(country, start, end);  } }  

DateTimeParameterAttribute.GetBinding вызывается для обоих параметров даты, поэтому DateTimeParameterBinding он возвращается правильно для обоих.

Когда я звоню что-то вроде:

https://localhost:44326/api/Hol/Country/44/Dates/2021-01-01/2021-13-13

Отображается ошибка 404, означающая, что маршрут не найден. Кроме того, DateTimeParameterBinding.ExecuteBindingAsync это не называется

Какая-нибудь помощь в этом деле?

У меня есть другие методы действий в этом же контроллере, которые работают правильно. Только этот, содержащий параметры даты, не найден.