Ошибка OData v4 при запуске: ресурс не найден для сегмента "что угодно"

Я создаю свою новую службу v4, и все шло хорошо, пока я не добавил новый контроллер для новой модели / сущности и не получил эту ошибку при запуске сайта для тестового запуска.

контроллер, кажется, правильно закодирован, как и другие.

шаблон пути "клиенты" в действии "GetFeed" в контроллере "CustomersOData" не является допустимым шаблоном пути OData. Ресурс не найден для сегмента клиентов.

Что на Земле это значит?

2 ответов


эта ошибка происходит в сценарии маршрутизации атрибутов Web API. Маршрутизация атрибутов Web API проверит все ODataRouteAttributes для всех найденных ODataControllers при запуске инициализатора HttpConfiguration.

вы упомянули, что ошибка произошла после добавления новой модели / сущности, поэтому, я думаю, у вас может быть две модели Edm:

ModelA, ModelB

и EntitySet "клиенты" находится только в одной из моделей, например ModelA.

кроме того, вы можете иметь следующие коды для новой добавленной модели:

config.MapODataServiceRoute("...", "...", ModelB);

при запуске Web API находит атрибут:

[ODataRoute("Customers")]
public IHttpActionResult Get()
{
 ...
}

но Web API не может найти объект "клиенты", установленный в ModelB.

Я думаю, вы можете исправить это, поместив все в одну модель.


Если это происходит при запуске, проверьте, что вы добавили тип модели Customers в построитель моделей во время запуска.

builder.EntitySet<CustomerModel>("Customers");

похоже, что сопоставления атрибутов перечисляются для нового контроллера, но он не может сопоставить тип модели клиента с набором сущностей.

Примечание: Q / A я понял это почти сразу, но я публикую здесь, потому что я, вероятно, сделаю это снова и забуду, что я сделал неправильно!