ASP.MVC WebAPI Маршрутизация Odata для двух или более методов контроллера - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь добавить новый путь к моему веб-сервису odata, и теперь я полностью сбит с толку.

Если у меня есть только один метод - все работает просто замечательно. Вот мой код

//webapiconfig.cs
   config.MapHttpAttributeRoutes();
   config.Filter().Expand().Select().OrderBy().MaxTop(null).Count();
   var userInfo = builder.EntitySet<UserInfo>("Users");
            userInfo.EntityType.HasKey(x => new { x.TN });
            config.MapODataServiceRoute(
                routeName: "ODataRoute",
                routePrefix: "odata/",
                model: builder.GetEdmModel());

    //usercontroller
    [EnableQuery(
            EnableConstantParameterization = true,
            PageSize = 100,
            AllowedQueryOptions = AllowedQueryOptions.Top | AllowedQueryOptions.Filter | AllowedQueryOptions.Skip,
            AllowedArithmeticOperators = AllowedArithmeticOperators.None,
            AllowedLogicalOperators = AllowedLogicalOperators.Equal | AllowedLogicalOperators.Or | AllowedLogicalOperators.And,
            AllowedFunctions = AllowedFunctions.StartsWith | AllowedFunctions.ToLower)]
    [ODataRoute("Users/UsersInfo")]
        public IQueryable<UserInfo> GetUserInfo(ODataQueryOptions<UserInfo> queryOptions)
        {
            //business logic
        }

Если я пытаюсь добавить новый метод - он не отвечает вообще

[EnableQuery]
[ODataRoute("Users/OtherUsers")]
public IQueryable<UserInfo> GetOtherUser() {
     //business logic   
    }

Я пытался играть с атрибутом ODataRoute, но безуспешно. В лучшем случае я получаю «Было найдено несколько действий, которые соответствуют ошибке запроса». Что меня беспокоит - веб-сервис отвечает на http://localhost/odata/Users/ маршрут и возвращает те же результаты для http://localhost/odata/Users/UsersInfo и http://localhost/odata/Users/OtherUsers.

Я думаю, что допустил ошибку в webapiconfig, но не могу понять, что именно

...