无参数的WebAPI OData v4自定义操作无法路由错误“未找到路由约定...”

时间:2016-08-12 07:32:16

标签: asp.net-web-api odata

我有非常简单的OData控制器,可以成功处理标准操作(至少GET,POST,PUT和DELETE方法正在工作)。我跟着this tutorial并添加了简单的绑定操作。该方法具有参数参数,但实际上它不需要参数:

[HttpPost]
public IHttpActionResult Close([FromODataUri] int key, ODataActionParameters parameters) {
  return Ok();
}

我已在OData EDM配置中定义了此操作,如下所示:

builder.EntitySet<Ticket>("tickets");
builder.EntityType<Ticket>().Action("Close");

我试图从邮递员那里采取行动:

POST /odata/tickets(2)/Default.Close HTTP/1.1
Host: localhost:50477
Accept: application/json
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: eef4c1f6-8c7f-f5eb-c22d-4397f3bda170

但收到错误消息:

{
  "error": {
    "code": "",
    "message": "No HTTP resource was found that matches the request URI 'http://localhost:50477/odata/tickets(2)/default.close'.",
    "innererror": {
      "message": "No routing convention was found to select an action for the OData path with template '~/entityset/key/unresolved'.",
      "type": "",
      "stacktrace": ""
    }
  }
}

我在SO上阅读了整个互联网和所有相关文章,但无法解决这个问题。请帮帮我,因为我对如何对抗这个问题一无所知。

0 个答案:

没有答案