#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
это не называется
Какая-нибудь помощь в этом деле?
У меня есть другие методы действий в этом же контроллере, которые работают правильно. Только этот, содержащий параметры даты, не найден.