我有一个Web服务,最终用户将上传可能非常大的ZIP存档(一个测试文件超过200MB)。我想主动处理超大文件和优化大小限制的上传失败。
由于Web应用程序将部署在客户的计算机上,因此我无法轻松确保配置符合任何固定大小。我已经记录了如何使用 appcmd 命令将 requestLimits.maxAllowedContentLength 值设置为超过30MB的默认值。
但我想在网络应用中处理它;我希望有两件事:
要显示他们启动文件上传的页面上的当前限制,请执行以下操作:
每个文件上传仅限 15MB 。 如果您的存档较大, (等等,等等)
在超出该尺寸时给出有意义的错误。目前,数据发送需要很长时间,然后我会看到一个误导性的404页面。
有什么想法吗?
[编辑]
http://www.developer.com/db/article.php/10920_3426051_2/Limiting-Upload-Sizes-with-ASPNET.htm
我找到了上面的文章 - 但是当我可以拦截错误时,我继续在浏览器中重置 Request.Redirect()或 Context.RewritePath()强大>所以它真的没有比404更好。嗯,实际上是VS2008的调试服务器,而不是IIS。
答案 0 :(得分:3)
要获取masxAllowed内容,您可以使用此
protected int GetMaxUploadSize()
{
System.Web.Configuration.HttpRuntimeSection httpRuntimeSec = (System.Web.Configuration.HttpRuntimeSection)ConfigurationManager.GetSection("system.web/httpRuntime");
if (httpRuntimeSec != null)
{
return httpRuntimeSec.MaxRequestLength;
}
else
{
return 0;
}
}
还要将此添加到您的web.config:
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1000000" />
</requestFiltering>
</security>
对于您的第二个问题,我建议您使用客户端应用,以便在上传前验证文件大小,其中一个选项可能是silverlight