Json参数始终为空

时间:2015-06-24 07:28:22

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

我正在尝试使用Entity Framework构建OData端点。路由工作正常。

我的控制器中有一个post方法,post请求被正确路由,但是即使我传递参数(使用Fiddler 4),它也会收到空参数。

我的控制器方法是:

  [HttpPost,EnableQuery]
  public IHttpActionResult GetConfig_Post(ODataQueryOptions<GetConfig_Result> options, ODataActionParameters parameter)
        {  ...  }

ODataActionParameters参数始终为空。

路由代码是:

   public override string SelectAction(ODataPath odataPath, HttpControllerContext controllerContext, ILookup<string, HttpActionDescriptor> actionMap)
        {
            if (odataPath != null && odataPath.PathTemplate == "~/entityset/action")
            {
                var segment = odataPath.Segments.First() as EntitySetPathSegment;
                string typeName = segment.EntitySetName;
                if (controllerContext != null && (segment != null && controllerContext.Request.Method == HttpMethod.Post))
                {
                    if (typeName == "Config")
                    {
                        return "GetConfig_Post";
                    }
                }
            }

我找不到使用null参数处理以下POST请求的原因。 [请求如Fiddler,HTTP版本设置为1.1]

User-Agent: Fiddler
Content-Type: application/json
Host: localhost:52673
Content-Length: 36

Data:
{"id":"21"}

1 个答案:

答案 0 :(得分:0)

由于您正在使用WebAPI并在请求正文中传递数据,我相信您必须使用[FromBody]参数属性。

更重要的是,我相信你只能在控制器的POST动作中使用一个参数。