自定义OData v4函数始终返回406

时间:2015-11-03 17:42:14

标签: odata asp.net-web-api2

所以我试图将此方法映射为Odata函数......

var forBuyers = Builder.EntityType<TRDetails>().Collection.Function("ForBuyerOrganisations");
forBuyers.ReturnsCollection<TRDetails>();
forBuyers.CollectionParameter<int>("orgIds");

我已将其映射为......

var forBuyers = Builder.EntityType<TRDetails>().Collection.Function("ForBuyerOrganisations");
forBuyers.ReturnsCollectionFromEntitySet<TRDetails>();
forBuyers.CollectionParameter<int>("orgIds");

......我也试过这个......

jenkins-workflow

我可以用网址调用它:

  

〜/ TRDetails / ForBuyerOrganisations?orgIds = 1

问题:

请求执行我的代码并从此方法返回,然后客户端获得406。

任何想法?

2 个答案:

答案 0 :(得分:0)

如果TRDetails是实体集,

forBuyers.ReturnsCollectionFromEntitySet<TRDetails>("TRDetails");

我想你错过了实体集的名字。

答案 1 :(得分:0)

是。 @Ouyang表示配置错误。此外,正如我所看到的,还有其他四个错误:

  1. 你应该使用[FromODataUri],而不是[FromUri]作为参数。
  2. 您应该使用namespace-qualified调用该函数。

    <强> TRDetails / Namespace.ForBuyerOrganisations(...)

  3. 您应该将参数设置为list,因为您将其配置为集合。

  4. 您应该使用()for参数调用该函数。
  5. 因此,以下请求是样本请求:

    ~/TRDetails/Default.ForBuyerOrganisations(orgIds=[5,4,2,3,1])