Ho iniziato a includere OData nel mio progetto WebAPi2 (attualmente ospitato in IIS8 Express sul mio computer di sviluppo). La mia classe config OData si presenta così:Percorsi OData restituiti 404 non trovato
public class ODataConfig
{
private readonly ODataConventionModelBuilder modelBuilder;
public ODataConfig()
{
modelBuilder = new ODataConventionModelBuilder();
modelBuilder.EntitySet<Category>("Category");
}
public IEdmModel GetEdmModel()
{
return modelBuilder.GetEdmModel();
}
}
poi ho aggiunto il seguente nella mia classe WebApiConfig:
ODataConfig odataConfig = new ODataConfig();
config.MapODataServiceRoute(
routeName: "ODataRoute",
routePrefix: "MyServer/OData",
model: odataConfig.GetEdmModel(),
defaultHandler: sessionHandler
);
e ha iniziato con un controller di base e una sola azione, come questo:
public class CategoryController : ODataController
{
[HttpGet]
public IHttpActionResult Get([FromODataUri] int key)
{
var entity = categoryService.Get(key);
if (entity == null)
return NotFound();
return Ok(entity);
}
}
Quindi, nel mio HttpClient, l'URL della richiesta è simile al seguente: MyServer/OData/Category (10)
Tuttavia, sto ottenendo il seguente errore:
{"Message":"No HTTP resource was found that matches the request URI 'http://localhost/MyServer/OData/Category(10)'.","MessageDetail":"No type was found that matches the controller named 'OData'."}
Che cosa mi manca qui?
EDIT
Se ho impostato il routePrefix su null o 'odata' e cambiare la mia richiesta url di conseguenza, la richiesta funziona bene. Questo significa che non posso avere un prefisso del percorso come "myServer/odata".
Questa convenzione di denominazione standard OData? E se sì, può essere ignorato?
ho passato un'ora a cercare di capire cosa ho fatto di sbagliato. Grazie! –