У меня проблема с созданием и удалением ссылок, работающих с контроллером с использованием Odata 7.0.1
В соответствии с http://odata.github.io/WebApi/#03-01-routing-abstract следующие операторы должны автоматически создавать маршруты (раздел «Запросы, создание и удаление ссылок»))
HTTP POST и PUT для метода с именем CreateRef
Далее подпись метода на контроллере отображается как
// POST /odata/Products(1)/Supplier/$ref
public HttpResponseMessage CreateLink(int key, string navigationProperty, [FromBody] Uri link)
Для удалений это:
// DELETE /odata/Products(1)/Supplier/$ref
public HttpResponseMessage DeleteLink(int key, string navigationProperty, [FromBody] Uri link)
с шаблоном
HTTP DELETE DeleteRef
У меня есть тест интеграции клиента, и он генерирует ссылку в виде
DELETE http://localhost/Building(007c3552-43da-44c4-bf8f-b5221553c484)/UsageTypes/$ref?$id=UsageType(18)
, что мне нравится.
К сожалению, я всегда получаю ошибку маршрутизации, исключение WebRequestException "not found".
Я пробовал оба
[HttpDelete]
public async Task<IActionResult> DeleteRef(Guid key, String navigationProperty, [FromBody] Uri link) {
return Ok();
}
и
[HttpDelete]
public async Task<IActionResult> DeleteLink(Guid key, String navigationProperty, [FromBody] Uri link) {
return Ok();
}
Что я делаю не так?
Обратите внимание, что Odata в целом работает - у нас есть методы get, put и post для отдельных объектов, функций и действий, правильно сгенерированных для маршрутизации.На данный момент кажется, что только ссылки выходят из строя (это новая часть, которую мы сейчас запустили в производство для удаления старого API на основе REST).