OData WebApi:自定义操作不起作用
我正在使用启用了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资源被发现。
一个OData动作总是使用http动词POST并且通常用于对服务器有影响的方法,但是您的控制器方法具有HttpGet
属性,它看起来像您试图用GET调用此方法。看看这个方法实际上做了什么(只是检索一些数据)我认为你想要一个OData函数而不是一个Action。要做到这一点,只是改变你Action
电话是一个Function
调用是这样的:
FunctionConfiguration personalInfo = builder.Entity<User>().Collection.Function("PersonalInfo");
我的OData函数库中缺少函数,是最新的吗? – ANKIT
仍然无法找到功能关键字,请让我知道,如果在最新的图书馆可用? – ANKIT
您使用的是哪个版本的OData? – TomDoesCode
以何种方式是不工作? – DavidG
你试过这个URL而不是'http:// domain/odata/PersonalInfo'吗? – DavidG
@DavidG给'资源找不到'! – ANKIT