J'ai des contrôleurs WebApi 2 fonctionnant côte à côte avec un seul contrôleur OData dans le même projet. Essayer de définir la configuration de routage nécessaire:Quelle est la bonne façon d'étendre les méthodes OData à un seul contrôleur?
- toute demande /api doit être mis en correspondance avec ce ODataController
- toutes les autres demandes doivent être adressées aux contrôleurs de api Web ordinaire
Lorsque je tente à la carte /api route vers OData contoller comme ceci:
class WebApiConfig
{
public static void Register(HttpConfiguration configuration)
{
configuration.Routes.MapHttpRoute("API Default", "api/{action}/{id}",
new { controller = "ApiOdata", id = RouteParameter.Optional });
ODataModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<Organization>("Organizations");
configuration.Routes.MapODataServiceRoute(
routeName: "ODataRoute",
routePrefix: "Api",
model: builder.GetEdmModel());
}
}
tous les appels de méthode fonctionnent correctement à la fois pour les contrôleurs Web Api et OData, mais ces requêtes telles que /api/$ metadata ne fonctionnent pas.
Lorsque je supprime la route "par défaut API" - demande aux méthodes de régulation OData telles /api/Organisations cesse de travailler (retour 404) mais /api/métadonnées $ commence à.
Message détaillé erreur 404:
<Error>
<Message>
No HTTP resource was found that matches the request URI 'http://localhost:53576/api/Organizations'.
</Message>
<MessageDetail>
No type was found that matches the controller named 'Organizations'.
</MessageDetail>
</Error>
Quelle est la bonne façon de retrouver tous les OData appelle à des actions de contrôleur unique?