Ошибка 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 я понял это почти сразу, но я публикую здесь, потому что я, вероятно, сделаю это снова и забуду, что я сделал неправильно!