Ich habe WebApi 2-Controller Seite an Seite mit einzelnen OData-Controller im selben Projekt arbeiten. Der Versuch, benötigt Routing-Konfiguration einzurichten:Was ist der richtige Weg, um OData-Methoden auf einen einzelnen Controller zu beschränken?
- alle Anforderung an /api sollte sollte zu gewöhnlichen Web Api-Controller gerichtet auf diese ODataController
- alle anderen Anforderungen abgebildet werden werden
Wenn ich versuche, /api Route zu OData contoller wie diese zur Karte:
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());
}
}
Alle Methodenaufrufe funktionieren sowohl für den Web Api als auch für den OData Controller, aber solche Anfragen wie /api/$ Metadaten funktionieren nicht.
Wenn ich "API Default" Route entfernen - Anfragen an OData-Controller Methoden wie /api/Organisationen nicht mehr funktioniert (Rückkehr 404), aber /api/$ Metadaten beginnt.
Detaillierte 404-Fehlermeldung:
<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>
Was ist der richtige Weg, um alle OData abzubilden Anrufe an einzelne Controller-Aktionen?