Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# OData自定义操作中的Null参数_C#_Asp.net Web Api_Parameters_Odata - Fatal编程技术网

C# OData自定义操作中的Null参数

C# OData自定义操作中的Null参数,c#,asp.net-web-api,parameters,odata,C#,Asp.net Web Api,Parameters,Odata,我希望在OData控制器中添加一个自定义操作,以添加实体。我可以在OData控制器中提供的标准Post方法中实现这一点,但如果添加关联,当我从数据库刷新控制器时,会覆盖一些自定义代码 这是我添加的自定义方法 [HttpPost] public IHttpActionResult CreateValidCombination(ValidCombination validCombination) { if (!ModelState.IsValid) {

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

这是我添加的自定义方法

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

        return Ok();
}
请求头与标准post方法相同

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
该操作在WebApiConfig.cs中配置为

builder.EntityType<ValidCombination>().Collection
            .Action("CreateValidCombination")
            .Returns<IHttpActionResult>();
builder.EntityType()集合
.行动(“CreateValidComposition”)
.Returns();
问题在于,当标准OData Contoller Post方法接收到类型为“validComposition”的参数时,customer方法将其接收为null

我在fiddler中检查了请求头和主体,在这两种情况下都是相同的。我甚至尝试将[FromBody]放在参数前面,但没有效果。我正在尝试将值输入到自定义方法的参数中

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

根据,在您的自定义操作方法中,参数类型应该是ODataActionParameters而不是ValidComposition,OData WebApi的代码在中,非常容易调试,你也可以找到很多功能测试