请使用 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();}