【问题标题】:Preventing browser timeout on large file uploads防止浏览器在大文件上传时超时
【发布时间】:2010-09-18 10:25:23
【问题描述】:

我为使用 IFrame 和 ASP.NET AJAX 的 ASP.NET 网络表单编写了一个不错的小文件上传控件。

但是,在大量上传时,浏览器在完成表单发布之前会超时。

有什么办法可以增加这个吗?

我对替代解决方案并不感兴趣,所以请不要建议改变整个事情。它适用于

编辑:在 Page_Load 中设置超时似乎并没有改变任何东西。

【问题讨论】:

    标签: asp.net file-upload


    【解决方案1】:

    您需要在 IIS6 及更高版本上更新元数据库设置。键是“AspMaxRequestEntityAllowed”,以字节表示。我强烈建议使用 Metabase Explorer 进行更改,但可以通过 %systemroot%\system32\inetserv\metabase.xml 中的 XML 进行更改。

    元数据库浏览器:http://support.microsoft.com/kb/840671

    嗯,也许我找错了树……如果没有调整,你就不会做 5 MB 的文件。

    又一次尝试:查看您的 web.config:

    <system.web>
      <httpRuntime  maxRequestLength="10240" executionTimeout="360"/>
    </system.web>
    

    最大请求长度以千字节为单位,执行超时以秒为单位。

    【讨论】:

    【解决方案2】:

    把它放在你的 web.config 中

      <system.web>
         <httpRuntime executionTimeout="360" maxRequestLength="100000" />
    

    这可以实现 360 秒的超时和一次 100,000 Kb 的上传数据。

    如果这不起作用,请在您的 IIS 服务器上运行此命令。 (替换 [IISWebsitename])

    C:\Windows\System32\inetsrv>appcmd set config "[IISWebsitename]" -section:requestFiltering -requestLimits.maxAllowedContentLength:100000000 -commitpath:apphost
    

    这一次可以上传 100,000,000 字节的数据。

    【讨论】:

    • 谢谢! requestFiltering 参数对我有用。在 IIS 7 中,我使用以下命令进行了更改:请求过滤 |规则 |编辑功能设置 |允许的最大内容长度。
    【解决方案3】:

    在 Page_Load 中,将 Server.ScriptTimeout 设置为适合您的值。我相信以秒为单位。

    【讨论】:

    • 您会在实际返回的 iframe 中执行此操作,对吗?
    • 是的,如果您在 iframe 中收到请求超时,那么您将在其中设置 Server.ScriptTimeout。
    【解决方案4】:

    我想你可能需要调整MaxRequestLength

    我认为它在 Web.config 中默认为 4megs。

    以下将允许 ~10 meg 文件:

    <httpRuntime maxRequestLength="10240" />
    

    【讨论】:

      【解决方案5】:

      打开您的 Web.config 文件,在 &lt;system.web&gt; 标签下方添加以下标签:

      <httpRuntime executionTimeout="90" maxRequestLength="4096" useFullyQualifiedRedirectUrl="false" minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="100" enableVersionHeader="true" />

      现在,看看&lt;httpRuntime&gt; 标签的 maxRequestLength="4096" 属性。您可能已经意识到,您需要做的就是将该值更改为您选择的其他值(8192 为 8 Mb,16384 为 16 Mb,65536 为 64 Mb,等等...)。

      【讨论】:

        【解决方案6】:

        查看Velodoc XP Edition的代码。它包括一个上传流模块、一个可恢复的下载处理程序和基于 ASP.NET Ajax 扩展的 ASP.NET 上传控件,并且都是开源的。

        更多信息请查看www.memba.com 和www.velodoc.com。

        【讨论】:

        • 这里没有直接解决问题,可能是广告。
        • 链接到的网站当前未使用。
        【解决方案7】:

        我使用带有 HTML 的 PHP 解决了这个问题:

        1. 我开始一个会话
        2. 进入循环
        3. 创建一个循环,重新加载页面,该页面在 时间
        4. 直到工作完成
        5. 循环内的代码完成了部分工作
        6. 增加一个会话变量以指向作业的下一部分
        7. 使用 java 脚本重新加载页面 //这将重新启动服务器 页面计时器
        8. 循环
        9. 加载页面以报告工作已完成

        【讨论】:

          猜你喜欢
          • 2016-09-11
          • 2011-08-21
          • 1970-01-01
          • 2014-11-23
          • 2010-12-30
          • 2010-12-04
          • 2017-02-06
          • 2022-01-11
          • 1970-01-01
          相关资源
          最近更新 更多