如何在webapi 2.2中创建一个未绑定的POST动作

本文关键字:一个 绑定 POST 动作 webapi 创建 | 更新日期: 2023-09-27 18:12:28

我想在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");

当我在fiddler {"Message":"没有找到与请求URI ' http://localhost/RegisterNewUser '匹配的HTTP资源"}中调用此方法时,我得到一个404。

odata服务工作正常,并且支持所有正常的CRUD谓词。

如何在webapi 2.2中创建一个未绑定的POST动作

您需要将[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/.