如何使用ASP.NET在IIS上查找POST的大小限制?

时间:2010-06-03 19:38:55

标签: asp.net iis iis-7

我有一个Web服务,最终用户将上传可能非常大的ZIP存档(一个测试文件超过200MB)。我想主动处理超大文件和优化大小限制的上传失败。

由于Web应用程序将部署在客户的计算机上,因此我无法轻松确保配置符合任何固定大小。我已经记录了如何使用 appcmd 命令将 requestLimits.maxAllowedContentLength 值设置为超过30MB的默认值。

但我想在网络应用中处理它;我希望有两件事:

  1. 要显示他们启动文件上传的页面上的当前限制,请执行以下操作:

    每个文件上传仅限 15MB 如果您的存档较大, (等等,等等)

  2. 在超出该尺寸时给出有意义的错误。目前,数据发送需要很长时间,然后我会看到一个误导性的404页面。

  3. 有什么想法吗?

    [编辑]

    http://www.developer.com/db/article.php/10920_3426051_2/Limiting-Upload-Sizes-with-ASPNET.htm

    我找到了上面的文章 - 但是当我可以拦截错误时,我继续在浏览器中重置 Request.Redirect() Context.RewritePath()所以它真的没有比404更好。嗯,实际上是VS2008的调试服务器,而不是IIS。

1 个答案:

答案 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