如何在web api 2.2 odata中进行未绑定的POST操作

时间:2014-07-10 22:39:55

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

我希望在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中调用此方法时返回404 {&#34; Message&#34;:&#34;未找到与请求URI匹配的HTTP资源&#39; http://localhost/RegisterNewUser&# 39;&#34;}。

odata服务正常,并支持所有正常的CRUD动词。

1 个答案:

答案 0 :(得分:3)

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

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

注意:因为它是一个未绑定的动作,参数&#34; [FromODataUri] int key,&#34;不需要。

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