FormDataCollection在ASP.NET Core 2.1中不起作用?

时间:2018-07-12 13:15:02

标签: c# asp.net-core-2.1

请勿使用Core 1.1或2.0进行检查。 情况是在控制器方法中使用 FormDataCollection 作为参数时:

[Route("[controller]")]
[ApiController]
public class AuthController : ControllerBase
{
    [Route("user")]
    [HttpPost]
    public HttpResponseMessage CheckUser(FormDataCollection form)
    {
     ...
    }
}

无论Content-Type标头如何,它都会返回 400错误请求

但是它可以在.NET Framework 4.5中使用:

[RoutePrefix("auth")]
public class AuthController : ApiController
{
    [Route("user")]
    [HttpPost]
    public HttpResponseMessage user(FormDataCollection form)
    {
        ...
    }
}

我当然可以使用Request.Form.TryGetValue(key, out var value)。但是Core中没有描述类 FormDataCollection ,我很好奇我们可以(也应该)使用它来获取post参数吗?

1 个答案:

答案 0 :(得分:1)

Microsoft.AspNetCore.Mvc.WebApiCompatShim 附带的

FormDataCollection 没有无参数构造函数,因此这可能是问题的原因。按照official documentation-

  

为了使绑定发生,该类必须具有公共默认值   构造函数和要绑定的成员必须是公共可写属性。   当模型绑定发生时,该类将仅使用实例化   公共默认构造函数,然后可以设置属性。