2008-10-21 143 views
9

我有一个很好的小文件上传控件,我使用IFrame和ASP.NET AJAX为ASP.NET webforms编写。防止大文件上传浏览器超时

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

有没有办法可以增加这个?

我对替代解决方案没有太大兴趣,所以不要建议将整个事情改变。它适合于< 5兆上传,我只想把它提升到8mb左右。

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

回答

2

在Page_Load中,将Server.ScriptTimeout设置为适合您的值。我相信在几秒钟内测量。

+0

你会在实际的iframe中做到这一点,得到张贴回来,是正确的? – FlySwat 2008-10-21 22:31:05

+0

是的,如果您在iframe中获取请求超时,那么您将在其中设置Server.ScriptTimeout。 – JasonS 2008-10-21 22:38:44

10

您需要更新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> 

最大请求长度在千字节和执行超时是秒。

+0

maxRequestLength实际上是千字节。请参阅http://msdn.microsoft.com/en-us/library/e1f13641.aspx – 2010-09-28 09:44:45

+0

你是对的,否则我提到的小数目是没有意义的。谢谢,编辑。 – Godeke 2010-09-28 17:47:00

1

我想你可能需要调整MaxRequestLength

其在Web.config我觉得默认的4megs。

下将允许〜10兆的文件:

<httpRuntime maxRequestLength="10240" /> 
-6

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

欲了解更多信息,请查阅www.memba.comwww.velodoc.com

3

将此放在你的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字节的上载数据。

-6

我解决了这个使用PHP与HTML:

  1. 我启动一个会话
  2. 进入一个循环
  3. 创建一个循环,重新加载,在一个 时间做这项工作的一部分的页面
  4. 直到完成作业
  5. 循环内的代码执行部分作业
  6. 将会话变量增加到点使用Java脚本//这将重新启动西弗斯 页面计时器
  7. 负荷页报告任务完成
1

打开Web到工作的下一部分

  • 重新加载页面config文件,只是在<system.web>标签下方,添加以下代码:

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

    现在,只需要看看maxRequestLength = <httpRuntime>标记的“4096”属性。正如您可能已经意识到的那样,您只需将值改为您选择的其他值(8 Mb为8 Mb,16384为16 Mb,65536为64 Mb,等等......)。