Ресурс / путь OData WebApi Core 2.2 не найден - PullRequest
0 голосов
/ 09 ноября 2019

Я использую WebApi Core 2.2. Клиент Microsoft OData добавляет новую родительскую запись плюс подзапись (Deal + DealFee) из приложения WPF. Я размещаюсь в IIS на Windows 10.

Когда я вызываю container.SaveChanges (), он успешно вызывает службу для добавления родительской записи Deal, но затем выполняет операцию SECOND POST с этим URL (этогенерируется клиентской библиотекой MS odata):

POST http://localhost/mysite/odata/Deals(14)/DealFees

(обратите внимание, что это включает в себя ID 14, который был только что сгенерирован при добавлении сделки)

Это два отдельных запроса POST из од данных MSклиентская библиотека, а не "глубокая вставка", по-видимому. Тем не менее, это приводит к 404 (NotFound), который я могу наблюдать в Fiddler. Следующие URL работают идеально:

/odata/Deals
/odata/Deals(14)
/odata/DealFees

Похоже, что либо служба WebApi Core 2.2 не обрабатывает путь POST к / Deals (14) / DealFees, либо OR / Deals (14) / DealFees isn 't действительные данные Uri? Этот тип пути обычно поддерживается в OData?

Я не знаю. Кто-нибудь может пролить свет на то, что происходит?

1 Ответ

0 голосов
/ 12 ноября 2019

Глубокая вставка в ODAP WebAPI не поддерживается. Мне кажется, что клиент обновляет набор ресурсов и набор ресурсов для навигации двумя отдельными пост-запросами, и причина, по которой вы получаете 404, заключается в том, что в сервисе не отображается действие, сопоставленное со вторым URI запроса.

Служба может поддерживать это либо путем введения действия контроллера PostToDealFeesFromDeals с соглашением о маршрутизации OData по умолчанию, либо путем использования атрибутной маршрутизации для сопоставления действия для таких запросов.

Если действие уже существует, то это может бытьпервый запрос не завершил создание новой записи, а второй запрос был выполнен, следовательно 404.

...