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

Luke Puplett picture Luke Puplett · Jan 7, 2015 · Viewed 11.9k times · Source

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?

Answer

Sam Xu picture Sam Xu · Jan 8, 2015

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.