用于参考操作的Odata路由,缺少文档

8 asp.net-mvc odata .net-core

我在使用Odata 7.0.1针对控制器进行链接创建和删除时遇到问题

根据http://odata.github.io/WebApi/#03-01-routing-abstract,以下模板应自动创建路由(部分查询,创建和删除链接)

在名为的方法上进行Http POST和PUT CreateRef

再往下,控制器上的方法签名显示为

// POST /odata/Products(1)/Supplier/$ref
public HttpResponseMessage CreateLink(int key, string navigationProperty, [FromBody] Uri link)
Run Code Online (Sandbox Code Playgroud)

对于删除,它是:

// DELETE /odata/Products(1)/Supplier/$ref
public HttpResponseMessage DeleteLink(int key, string navigationProperty, [FromBody] Uri link)
Run Code Online (Sandbox Code Playgroud)

模板是

HTTP DELETE DeleteRef

我有一个客户端集成测试,它生成以下形式的链接

DELETE http://localhost/Building(007c3552-43da-44c4-bf8f-b5221553c484)/UsageTypes/$ref?$id=UsageType(18)

对我来说看起来不错

可悲的是,我总是遇到路由错误,“未找到” WebRequestException。

我都尝试过

[HttpDelete]
public async Task<IActionResult> DeleteRef(Guid key, String navigationProperty, [FromBody] Uri link) {
    return Ok();
}
Run Code Online (Sandbox Code Playgroud)

[HttpDelete]
public async Task<IActionResult> DeleteLink(Guid key, String navigationProperty, [FromBody] Uri link) {
    return Ok();
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

请注意,Odata在一般工作中-我们具有正确生成用于路由的单个对象,函数和操作的get和put和post方法。目前,只有链接似乎失败了(这是我们现在投入生产的新部分,以淘汰旧的基于REST的API)。