У меня есть бок о бок Web API 2.2 APIController и OData v4 ODataController. Мой APIController использует маршрутизацию атрибуты внутренне, как это (нет предопределенных значений по умолчания маршрутизации):OData v4 Префикс маршрутизации?
[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
}
}
и, как таковые, проложенных к через ./api/My и ./api/My/?mykey=value
и я попытался установить мой ODataController следовать подобный костюм с:
[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
}
}
определение OData маршрут заранее, как это:
ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<MyModel>("My");
config.MapODataServiceRoute(
routeName: "ODataRoute",
routePrefix: "odata",
model: builder.GetEdmModel()
);
, но пытается получить доступ ./odata/My и ./odata/My(value), в конечном итоге входит в мой APIController вместо ODataController.
Как я могу направить их с помощью разных префиксов, но с тем же именем, и попросить их перейти к соответствующим контроллерам. Я не хочу иметь другое имя для каждого маршрута, если я могу его предотвратить, префиксы должны заботиться обо всем, но по какой-то причине это не так.
В каком пространстве имен 'ODataRoute' найден! Я не могу найти его –
ODataRoute раньше находился в пространстве имен System.Web.Http.OData.Routing, но это было устарело. Это новый дом находится под пространством имен System.Web.OData.Routing, которое вы можете получить как часть пакета Microsoft.AspNet.OData nuget. – Xorcist