我想在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");
当我在提琴手{“ Message”:“未找到与请求URI’http:// localhost / RegisterNewUser’.”相匹配的HTTP资源时,我返回了404.
odata服务可以正常工作,并支持所有普通的CRUD动词.
解决方法:
您需要将[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键”.
这是一个动作示例,仅供参考:https://aspnet.codeplex.com/SourceControl/latest#Samples/WebApi/OData/v4/ODataActionsSample/.