请勿使用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参数吗?
答案 0 :(得分:1)
FormDataCollection 没有无参数构造函数
,因此这可能是问题的原因。按照official documentation-为了使绑定发生,该类必须具有公共默认值 构造函数和要绑定的成员必须是公共可写属性。 当模型绑定发生时,该类将仅使用实例化 公共默认构造函数,然后可以设置属性。