[英]OData WebApi: Custom action not working
我正在使用通過OData(使用ODataController)啟用的ASP.Net 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");
生成的元數據
<FunctionImport Name="PersonalInfo" IsBindable="true" m:IsAlwaysBindable="true">
<Parameter Name="bindingParameter" Type="Collection(Models.User)" Nullable="false"/>
</FunctionImport>
編輯1
我錯過了提及,以下是我從預期的URL收到的錯誤:
找不到與請求URI'http:// domain / odata / User / PersonalInfo '匹配的HTTP資源。
OData操作始終使用http謂詞POST,通常用於對服務器HttpGet
方法,但是您的控制器方法具有HttpGet
屬性,並且您似乎正在嘗試使用GET調用它。 查看該方法的實際作用(只是檢索一些數據),我認為您想擁有OData函數而不是Action。 為此,只需將您的Action
調用更改為Function
調用,如下所示:
FunctionConfiguration personalInfo = builder.Entity<User>().Collection.Function("PersonalInfo");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.