OData v4 error on start-up: Resource not found for the segment 'Whatever'

Deadly 提交于 2019-12-23 08:51:24

问题


I am building out my new v4 service and all was going well until I added a new controller for a new model/entity and got this error when starting the site up for a test run.

The controller seems to be correctly coded, just like the others.

The path template 'Customers' on the action 'GetFeed' in controller 'CustomersOData' is not a valid OData path template. Resource not found for the segment 'Customers'.

What on Earth does that mean?


回答1:


This error happens in Web API attribute routing scenario. Web API attribute routing will check all ODataRouteAttributes for all found ODataControllers when running the initializer of HttpConfiguration.

You mentioned that the error happened after you added a new Model/entity, so I guess you maybe have two Edm Models:

ModelA, ModelB

And EntitySet "Customers" is only in one of the model, for example the ModelA.

Besides, you may have the following codes for the new added Model:

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

When start-up, Web API finds the attribute:

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

but, Web API can't find the "Customers" entity set in ModelB.

I think you can fix it by putting all into one model.




回答2:


If this is happening on start-up then check that you have added your Customers model type to the model builder during start-up.

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

It sounds like the attribute mappings are being enumerated for the new controller but it cannot map the Customer model type back to an entity set.

Note: Q/A I figured this out almost immediately but I'm posting here because I'll probably do this again and forget what I did wrong!



来源:https://stackoverflow.com/questions/27824774/odata-v4-error-on-start-up-resource-not-found-for-the-segment-whatever

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!