Маршрутизация атрибутов с необязательными параметрами в ASP.NET Web API
Я пытаюсь использовать маршрутизацию атрибутов Web API 2 для настройки пользовательского API. Мой маршрут работает так, что вызывается моя функция, но по какой-то причине мне нужно передать первый параметр, чтобы все работало правильно. Ниже приведены URL-адреса, которые я хочу поддерживать:
http://mysite/api/servicename/parameter1
http://mysite/api/servicename/parameter1?parameter2=value2
http://mysite/api/servicename/parameter1?parameter2=value2¶meter3=value3
http://mysite/api/servicename/parameter1?parameter2=value2¶meter3=value3&p4=v4
Последние 3 URL работают, но первый говорит: "Не найдено действий для" имени контроллера ", соответствующего запросу".
Мой контроллер выглядит так:
public class MyServiceController : ApiController
{
[Route("api/servicename/{parameter1}")]
[HttpGet]
public async Task<ReturnType> Get(string parameter1, DateTime? parameter2, string parameter3 = "", string p4 = "")
{
// process
}
}
1 ответ
Решение
Web API требует явной установки необязательных значений даже для типов, допускающих значение NULL... поэтому вы можете попробовать установить следующее, и вы должны увидеть, что ваш первый запрос был выполнен успешно
DateTime? parameter2 = null