Web Api帮助页面,多个获取相同的参数中断帮助生成器

时间:2014-08-13 09:34:58

标签: odata asp.net-web-api2

我创建了一个暴露三种不同GET方法的OData Controller。

// http://odata/Companies
IQueryable<Company> Get()

// http://odata/Companies(1)
SingleResult<Company> Get([FromODataUri] key)

// http://odata/Companies(1)/Persons
IQueryable<Persons> GetPersons([FromODataUri] key)

使用这种方法,OData Links约定可以很好地工作,但是帮助生成器只创建了一个方法Get(),而它跳过 Get{key} {{1 }}

如果我以这种方式更改方法:

GetPersons{key}

生成帮助但是Web Api OData不再起作用,因为框架正在寻找“关键”参数。

1 个答案:

答案 0 :(得分:0)

如果您使用的是OData v4(System.Web.OData.dll而不是System.Web.Http.OData.dll),则可以通过属性路由解决此问题:

[ODataRoute("Companies({companyKey})/Persons")]
IQueryable<Persons> GetPersons([FromODataUri] companyKey)

有关属性路由的详细信息,您可以参考https://aspnet.codeplex.com/SourceControl/latest#Samples/WebApi/OData/v4/ODataAttributeRoutingSample/