处理在web.config中上传的大小超过maxRequestLength的文件

时间:2010-10-26 01:59:05

标签: c# asp.net

在我的web.config中,我的文件上传大小限制为10 MB:

<httpRuntime maxRequestLength="10000" /> <!-- file size limit in KB -->

在我的页面上,我正在检查用户是否没有上传大于5 MB的文件:

protected void cvImageSize_ServerValidate(object source, ServerValidateEventArgs args)
{
    args.IsValid = (fupFile.PostedFile.InputStream.Length <= 5000000);
}

如果用户尝试上传3 MB文件,则会上传很好。如果用户尝试上载7 MB文件,则会显示来自cvImageSize的错误消息。

如果用户尝试上传13 MB文件,则该网站会崩溃。我不确定到底发生了什么,Firefox给了我一个页面“连接已重置。在页面加载时重置了与服务器的连接。

当用户尝试上传大小超过maxRequestLength的文件时,是否会遇到一些异常?我想在页面上向用户显示错误消息,而不是网站基本崩溃。

2 个答案:

答案 0 :(得分:4)

还有一个IIS执行超时 - 这可能会导致您的问题。你也可以提高这个价值。有关详情,请查看此文章:http://aspnetresources.com/articles/dark_side_of_file_uploads

答案 1 :(得分:0)

您的基本问题是“验证”(cvImageSize_ServerValidate)确实在服务器上发生。这意味着必须首先上传文件,以便服务器端代码能够验证。

因此,当上传更大的(web.config设置)文件时,服务器会抛出异常,您的代码永远不会有机会进行验证。无论您如何骰子,用户仍然必须首先将文件上传到您的服务器,以便服务器进行投诉或让您验证大小。

除非您能够使用Html5(以及兼容的浏览器) Html5 File Upload with Progress