我希望在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动词。
答案 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/。