从ODataController返回CreatedAtRoute位置

问题描述 投票:0回答:1

我有一个带Post方法的ODataController,该方法应该将URL返回到新创建的OData资源,如下所示:

public class TasksController: ODataController
{
    [HttpPost]
    public IActionResult Post([FromBody] Request request)
    {
        ...
        return CreatedAtRoute("GetTask", new Dictionary<string, object>{{"id", id}}, new object());
    }

    [ODataRoute(RouteName = "GetTask")]
    public IActionResult Get(int key)
    {
        ...
    }
}

就我而言,返回CreatedAtRoute时,我收到“ InvalidOperationException:没有路由与提供的值匹配”。我可以通过将代码更改为来解决此问题:

return Created($"{baseUri}/odata/Task({id})", new object());

有什么方法可以代替使用CreatedAtRoute并使其返回正确的OData路径?

c# asp.net-core-mvc odata odatacontroller
1个回答
0
投票

您在Created方法中返回的路线:"{baseUri}/odata/Task({id})"不存在。最简单的解决方法是更改​​您的URL以匹配您的控制器方法。

© www.soinside.com 2019 - 2024. All rights reserved.