2016-07-31 80 views
0

我正在使用啓用了OData的ASP.Net WebApi(使用ODataController)。OData WebApi:自定義操作不起作用

我有一個要求來完成我需要添加一個自定義操作,但不工作,它看起來我錯過了什麼,有人可以讓我知道我在做什麼錯了?

在此先感謝!

下面是我的實現代碼片段。在ODataConfig

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

自定義操作

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

添加行爲產生的元數據

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

編輯1

我錯過了提,下面是我從預期網址收到錯誤消息:匹配請求URI「http://domain/odata/User/PersonalInfo

沒有HTTP資源被發現。

+0

以何種方式是不工作? – DavidG

+0

你試過這個URL而不是'http:// domain/odata/PersonalInfo'嗎? – DavidG

+0

@DavidG給'資源找不到'! – ANKIT

回答

1

一個OData動作總是使用http動詞POST並且通常用於對服務器有影響的方法,但是您的控制器方法具有HttpGet屬性,它看起來像您試圖用GET調用此方法。看看這個方法實際上做了什麼(只是檢索一些數據)我認爲你想要一個OData函數而不是一個Action。要做到這一點,只是改變你Action電話是一個Function調用是這樣的:

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

我的OData函數庫中缺少函數,是最新的嗎? – ANKIT

+0

仍然無法找到功能關鍵字,請讓我知道,如果在最新的圖書館可用? – ANKIT

+0

您使用的是哪個版本的OData? – TomDoesCode