请使用 HttpContext.Request.ReadFormAsync,而不是 HttpContext.Request.Form。HttpContext.Request.Form 只有在以下状况下才能安全读取:
-
通过调用 ReadFormAsync 读取了窗体,并且
-
在使用 HttpContext.Request.Form 读取缓存的窗体值.
请勿这样做:下面的示例使用 。HttpContext.Request.Form 使用HttpContext.Request.Form,可能会导致线程池资源不足。
public class BadReadController : Controller
{
[HttpPost("/form-body")]
public IActionResult Post()
{
var form = HttpContext.Request.Form;
Process(form["id"], form["name"]);
return Accepted();
}
请这样做:下面的示例使用 异步读取窗体正文。
public class GoodReadController : Controller
{
[HttpPost("/form-body")]
public async Task<IActionResult> Post()
{
var form = await HttpContext.Request.ReadFormAsync();
Process(form["id"], form["name"]);
return Accepted();
}