为什么在调用服务器端验证之前 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
....
....
}
如果我禁用客户端验证
<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
....
....
}