2016-07-31 1 views
0

Я использую ASP.Net WebApi, который включен с помощью OData (с использованием ODataController).OData WebApi: Пользовательское действие не работает

У меня есть требование выполнить то, что мне нужно, чтобы добавить пользовательское действие, но это не работает, похоже, я что-то пропустил, может кто-нибудь сообщить мне, где я делаю неправильно?

Спасибо заранее!

Ниже приведены фрагменты кода моей реализации.

Пользовательское действие

[HttpGet] 
[Queryable] 
public IQueryable<User> PersonalInfo() 
{ 
    int UserID = this.UserTicket.User_ID; 
    return _users.Queryable().Where(d => d.UserID == UserID); 
} 

Добавление действия в ODataConfig

builder.EntitySet<User>(typeof(User).Name); 
ActionConfiguration personalInfo = builder.Entity<User>().Collection.Action("PersonalInfo"); 

Сформирован Metadata

<FunctionImport Name="PersonalInfo" IsBindable="true" m:IsAlwaysBindable="true"> 
    <Parameter Name="bindingParameter" Type="Collection(Models.User)" Nullable="false"/> 
</FunctionImport> 

EDIT 1

я пропустил упомянуть, ниже ошибка, что я получаю от ожидаемого URL:

Нет HTTP ресурс не был найден соответствующий запрос URI 'http://domain/odata/User/PersonalInfo.

+0

Каким образом это не работает? – DavidG

+0

Вы пробовали этот URL вместо 'http: // domain/odata/PersonalInfo'? – DavidG

+0

@DavidG дает «Ресурс не найден» !! – ANKIT

ответ

1

OData Действие всегда использует HTTP POST, глагол и, как правило, для методов, которые оказывают влияние на сервер, однако ваш метод управления имеет атрибут HttpGet и это выглядит, как вы пытаетесь назвать это с ГЭТ. Глядя на то, что на самом деле делает метод (просто получая некоторые данные), я думаю, что вы хотите иметь OData Function вместо Action. Чтобы сделать это, просто измените ваш Action вызов быть Function вызов, как это:

FunctionConfiguration personalInfo = builder.Entity<User>().Collection.Function("PersonalInfo"); 
+0

Функция отсутствует в моей библиотеке OData, это последнее? – ANKIT

+0

Все еще не можете найти ключевое слово Function, сообщите ли вы, если это доступно в последней библиотеке? – ANKIT

+0

Какую версию OData вы используете? – TomDoesCode

 Смежные вопросы

  • Нет связанных вопросов^_^