OData自定义操作中的空参数

时间:2015-04-27 15:02:46

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

我想在我的OData控制器中添加一个自定义操作来添加实体。我可以在OData控制器中提供的标准Post方法中做到这一点但我有一些自定义代码,如果我添加一个关联,当我从数据库刷新控制器时会被覆盖。

这是我添加的自定义方法

[HttpPost]
public IHttpActionResult CreateValidCombination(ValidCombination validCombination)
{
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        return Ok();
}

请求标头与标准发布方法

相同
POST http://localhost:20152/Admin/odata/ValidCombinations/fn.CreateValidCombination HTTP/1.1
Accept: */*
Content-Type: application/json
Referer: http://localhost:20152/Admin/index.html
Accept-Language: en-CA,en;q=0.5
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like     Gecko
Connection: Keep-Alive
Content-Length: 284
DNT: 1
Host: localhost:20152
Pragma: no-cache

Action在WebApiConfig.cs中配置为

builder.EntityType<ValidCombination>().Collection
            .Action("CreateValidCombination")
            .Returns<IHttpActionResult>();

问题是当标准OData Contoller Post方法正确接收“ValidCombination”类型的参数时,customer方法将其接收为null。

我在fiddler中检查过请求标题和正文,两种情况都是如此。我甚至尝试将[FromBody]放在参数前面,但无济于事。我试图为我的自定义方法的参数获取值。

之前有没有人遇到过这种情况。有没有办法我可以调试为什么参数没有被正确反序列化,即使这两个方法的请求和正文相同?

0 个答案:

没有答案