У меня есть проект веб-API, который использует маршрут по умолчанию «api/{controller}/{id}», где «id» является необязательным. В большинстве случаев этого достаточно, но в некоторых случаях мне нужна маршрутизация атрибутов. В этом конкретном случае у меня есть «api/Customers/{customerID}/Orders/{orderID}», где требуется идентификатор клиента, а orderID - необязательный. Первоначально мой код требовал только идентификатор заказа, но мне нужен способ вытащить заказы для конкретного клиента, поэтому я использовал маршрут атрибута для своих методов, чтобы это разрешить.Не удается использовать POST для конечной точки веб-API с использованием маршрутизации атрибутов
Я могу выполнить операции GET без проблем, но когда я пытаюсь выполнить операцию POST, я получаю ошибку 500. Что странно, но мой объект создается, поэтому возникшее исключение должно появляться после создания вставки базы данных, но я не могу подтвердить это, так как мой отладчик не работает. Мой API находится в отдельном проекте из моего пользовательского интерфейса и по какой-то причине я не могу заставить отладчик работать в проекте API, поэтому установленные мною точки останова не работают.
Последняя строка кода в моем методе POST это:
return CreatedAtRoute("DefaultApi", new { id = order.ID }, order);
Первый аргумент этого метода является название маршрута и один перечисленных выше для маршрута по умолчанию, заданный в WebApiConfig.cs. Этот конкретный маршрут, однако, отличается от значения по умолчанию:
[Route("api/Customers/{customerID:int}/Orders")]
Возможно, это проблема? Поскольку этот маршрут использует два аргумента, я бы предположил, что мне нужно будет указать их в аргументе routeValues (второй) для метода CreatedAtRoute.
Что мне нужно сделать, чтобы сделать эту работу? Я подозреваю, что у меня могут быть проблемы с выполнением операций PUT и DELETE, но мне нужно создать объект, прежде чем я смогу его изменить или удалить.