为什么在调用服务器端验证之前 HttpPostedFileBase 会在大文件上出错?

Why does HttpPostedFileBase error out on large files before server side validation gets called?

如果我禁用客户端验证

<add key="ClientValidationEnabled" value="false" />
<add key="UnobtrusiveJavaScriptEnabled" value="false" />

并尝试上传一个大约 11 MB 的文件,将文件设置为 HttpPostedFileBase 成员

    [ValidateFile]
    public HttpPostedFileBase StudentImageFileBase { get; set; }

我什至无法调用我的自定义验证码。一旦我点击提交按钮,我就会看到这个错误信息。我可以让客户端工作,但如果它在用户浏览器中被禁用怎么办?我是否一直在向用户显示此消息?有点不对劲,我不应该上传大文件吗?我不想在我的应用程序中尝试,但我必须在服务器端与它作斗争,对吗?

再看here。将适当的代码添加到您的 web.config(例如 1GB):

 <system.webServer>
   <security>
      <requestFiltering>
         <requestLimits maxAllowedContentLength="1073741824" />
      </requestFiltering>
   </security>
 </system.webServer>

<configuration>
    <system.web>
        <httpRuntime maxRequestLength="1048576" />
    </system.web>
</configuration>

现在它应该允许上传最大 1GB 的文件,您可以在服务器端检查大小:

public ActionResult Foo(HttpPostedFileBase file)
{
  ....
  if(file.ContentLength > 536870912) //512MB
     ....
  ....
}