C# OData自定义操作中的Null参数
我希望在OData控制器中添加一个自定义操作,以添加实体。我可以在OData控制器中提供的标准Post方法中实现这一点,但如果添加关联,当我从数据库刷新控制器时,会覆盖一些自定义代码 这是我添加的自定义方法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) {
[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的代码在中,非常容易调试,你也可以找到很多功能测试