【问题标题】:How to make an unbound POST action in webapi 2.2 odata如何在 webapi 2.2 odata 中进行未绑定的 POST 操作
【发布时间】:2014-07-10 22:39:55
【问题描述】:

我希望在 WebApi 2.2 OData 4 服务上创建一个未绑定的操作,但不知道如何正确设置它。

这是我的精简代码(在一个名为 UsersController 的控制器中):

[HttpPost]
public IHttpActionResult InitializeUser([FromODataUri] int key, ODataActionParameters parameters)
{
    // code to save user to DB & initialize account information...
    return Ok<User>(new User());
}

还有我的 WebApiConfig 方法:

builder.Action("RegisterNewUser").ReturnsFromEntitySet<User>("Users");

当我在提琴手中调用此方法时返回 404 {"Message":"未找到与请求 URI 'http://localhost/RegisterNewUser' 匹配的 HTTP 资源。"}。

odata 服务运行良好,并且支持所有正常的 CRUD 动词。

【问题讨论】:

    标签: c# asp.net-web-api odata


    【解决方案1】:

    您需要将 [ODataRoute("RegisterNewUser")] 添加到 InitializeUser。看起来像:

    [HttpPost]
    [ODataRoute("RegisterNewUser")]
    public IHttpActionResult InitializeUser(ODataActionParameters parameters)
    {
        // code to save user to DB & initialize account information...
        return Ok<User>(new User());
    }
    

    注意:由于是非绑定动作,所以不需要参数“[FromODataUri] int key”。

    这是一个动作示例,仅供参考:https://aspnet.codeplex.com/SourceControl/latest#Samples/WebApi/OData/v4/ODataActionsSample/

    【讨论】:

    • 不知道为什么我最初没有尝试过,但出于某种原因,我认为 ODataRoute 会从我在配置中设置的操作中设置...谢谢!
    猜你喜欢
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    • 2015-04-10
    • 1970-01-01
    • 2020-03-05
    • 1970-01-01
    • 1970-01-01
    • 2015-03-07
    相关资源
    最近更新 更多