Ich habe eine Seite-an-Seite Web API 2.2 APIController und OData v4 ODataController. My APIController verwendet Routing intern wie diese Attribute (es gibt keine vordefinierten Routing Defaults):OData v4 Routing-Präfix?
[RoutePrefix("api")]
public class MyController : ApiController
{
[HttpGet]
[Route("My")]
public IHttpActionResult Get()
{
//Code Here
}
[HttpGet]
[Route("My")]
public IHttpActionResult Get([FromUri] String mykey)
{
//Code Here
}
}
und werden als solche geroutet durch ./api/My und ./api/My/?mykey=value
und ich habe versucht, meine ODataController Einrichtung mit einer ähnlichen Klage folgen:
[ODataRoutePrefix("My")]
public class oMyController : ODataController {
[HttpGet]
public IHttpActionResult Get(ODataQueryOptions<FileModel> queryOptions) {
//Code Here
}
[HttpGet]
[ODataRoute("({mykey})")]
public IHttpActionResult Get([FromODataUri] String mykey) {
//Code Here
}
}
definieren OData Strecke vor der Zeit wie folgt aus:
ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<MyModel>("My");
config.MapODataServiceRoute(
routeName: "ODataRoute",
routePrefix: "odata",
model: builder.GetEdmModel()
);
, aber Versuche, auf ./odata/My und ./odata/My(value) zuzugreifen, landen in meinem APIController anstelle des ODataControllers.
Wie kann ich diese unter Verwendung der verschiedenen Präfixe, aber den gleichen Namen, und lassen Sie sie zu den entsprechenden Controllern gehen. Ich möchte nicht für jede Route einen anderen Namen haben, wenn ich das verhindern kann, die Präfixe sollten sich um alles kümmern, aber aus irgendeinem Grund nicht.
In welchem Namespace 'ODataRoute' gefunden wird! Ich kann es nicht finden –
ODataRoute war früher im System.Web.Http.OData.Routing-Namespace, aber das ist veraltet. Das neue Home befindet sich im System.Web.OData.Routing-Namespace, den Sie als Teil des nuget-Pakets Microsoft.AspNet.OData erhalten können. – Xorcist