Asp.net 如何配置IIS以处理真正大的文件上载?
平台:IIS6,ASP.NET2.0(.NET3.5),Server2003 我正在构建一个应用程序,它接受来自用户的文件,处理它们,并返回结果。使用HTTP POST将文件上载到ASP.Net web表单。应用程序需要一些大文件(数百MB) 我使用SWFUpload通过一个漂亮的进度条来完成上传,但这并不是问题的根源,因为当我使用一个指向上传接受器页面的标准HTML表单绕过它时,我会得到完全相同的错误。使用进度条时,上载将继续100%,然后失败。对于标准表单,行为似乎是相同的 我现在上传一个大约150MB的文件时遇到问题。我已经改变了我能找到的所有设置,但仍然没有运气 以下是我迄今为止所做改变的总结: 在Web.config中: 在system.web中添加了以下内容:Asp.net 如何配置IIS以处理真正大的文件上载?,asp.net,iis-6,file-upload,Asp.net,Iis 6,File Upload,平台:IIS6,ASP.NET2.0(.NET3.5),Server2003 我正在构建一个应用程序,它接受来自用户的文件,处理它们,并返回结果。使用HTTP POST将文件上载到ASP.Net web表单。应用程序需要一些大文件(数百MB) 我使用SWFUpload通过一个漂亮的进度条来完成上传,但这并不是问题的根源,因为当我使用一个指向上传接受器页面的标准HTML表单绕过它时,我会得到完全相同的错误。使用进度条时,上载将继续100%,然后失败。对于标准表单,行为似乎是相同的 我现在上传一个大
<httpRuntime executionTimeout="3600" maxRequestLength="1536000"/>
致:
当上传失败时,我从IIS得到一个404错误。我的web表单没有开始处理,或者至少没有进入页面加载事件。我在处理程序的开头抛出了一个异常,它根本不会在大文件上执行
对于较小的文件,一切都可以正常工作(我已经测试了大约5.5MB)。我不确定什么文件大小是限制,但我知道我的限制需要高于150MB,因为这不是客户端需要上传的最大文件
有人能帮忙吗?当我们遇到这个问题时,我们不得不根据这篇KB文章增加缓冲区大小限制: 我知道这提到了ASP,但我相信它也适用于ASP.NET 编辑:这里有一个可能与您的问题更相关的链接,并提供其他选项:
404和缺页加载:只有在服务器上完成POST后,IIS才能处理请求。因此,如果POST失败(由于其大小),它将无法触发页面的事件 你可以试试新的。
手册中写道:“默认情况下,NeatUpload不会直接限制上传的大小。”Urlscan在所有网站上都是活动的,并且有自己的请求实体长度限制。我不知道Urlscan正在我们的服务器上运行,因为它是一个全局ISAPI过滤器,而不是在我的个人网站上运行 注意:要查找全局ISAPI筛选器,请右键单击IIS管理中的“网站”文件夹,然后单击“属性”,然后单击“ISAPI筛选器”选项卡 您也可以尝试一下,它比NeatUpload有几个优点,包括它使用ASP.NET Ajax扩展。有关更多信息,请参见。您说: 但1536000只不过是1.5MB?(谷歌的注意事项): 对于IIS7,将下面的内容添加到web.config(我在上面添加了
):
第一篇文章是关于下载的,不是关于上传的,但我还是尝试了,没有成功。乔恩·加洛韦(Jon Galloway)的文章涵盖了我上面提到的内容。是的,我重新阅读了你的问题,意识到我的第一个链接是不正确的,但我觉得把它全部去掉很奇怪。所以我进一步研究了一下,并将第二个链接作为编辑发布。我希望第二个链接有帮助。这个大小是以KB为单位的,所以它实际上是~1.5GB。
<processModel autoConfig="true" />
<processModel autoConfig="true" responseDeadlockInterval="00:30:00" responseRestartDeadlockInterval="00:30:00" />
AspMaxRequestEntityAllowed="204800"
AspMaxRequestEntityAllowed="200000000"
<system.webServer>
<security>
<requestFiltering><requestLimits maxAllowedContentLength="262144000" /></requestFiltering> <!-- maxAllowedContentLength is in bytes. Defaults to 30,000,000 -->
</security>
</system.webServer>