我正在尝试使用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"}
答案 0 :(得分:0)
由于您正在使用WebAPI并在请求正文中传递数据,我相信您必须使用[FromBody]
参数属性。
更重要的是,我相信你只能在控制器的POST动作中使用一个参数。