平台:IIS 6,ASP.Net 2.0(.Net 3.5),Server 2003。

我正在构建一个接受用户文件,处理它们并返回结果的应用程序。使用HTTP POST将文件上载到ASP.Net Web表单。该应用程序需要一些大文件(数百MB)。

我正在使用SWFUpload通过一个很好的进度条来完成上传,但这并没有导致这个问题,因为当我使用指向我的上传接受者页面的标准HTML表单绕过它时,我得到完全相同的错误。使用进度条时,上传继续为100%,然后失败。使用标准形式,行为似乎是相同的。

我现在正在上传一个大约150MB的文件。我已经改变了我能找到的所有设置,但仍然没有运气。

以下是我到目前为止所改变的内容摘要:

在Web.config中: 在system.web中添加了这个:

<httpRuntime executionTimeout="3600" maxRequestLength="1536000"/>

在machine.config中: 在system.web里面,改了:

<processModel autoConfig="true" />

到:

<processModel autoConfig="true" responseDeadlockInterval="00:30:00" responseRestartDeadlockInterval="00:30:00" />

并在MetaBase.xml中: 改变:

AspMaxRequestEntityAllowed="204800"

为:

AspMaxRequestEntityAllowed="200000000"

当上传失败时,我从IIS收到404错误。我的Web表单没有开始处理,或者至少它没有进入Page_Load事件。我在该处理程序的开头抛出异常,并且它根本不会在大文件上执行。

小文件一切正常(我测试了大约5.5MB)。我不确定文件大小是什么限制,但我知道我的限制需要高于150MB,因为这不是客户端需要上传的最大文件。

有人可以帮忙吗?

有帮助吗?

解决方案

Urlscan在所有网站上都有效,并且拥有自己的请求实体长度限制。我不知道Urlscan是在我们的服务器上运行的,因为它是一个全局ISAPI过滤器,不在我的个人网站上运行。

注意:要找到全局ISAPI筛选器,请右键单击IIS Admin中的“Web站点”文件夹,然后单击“属性”,再单击“ISAPI筛选器”选项卡上的“属性”。

其他提示

(针对googlers的说明):

对于IIS7,请在下面添加到web.config(我在<system.serviceModel>上面添加):

<system.webServer>
        <security>
            <requestFiltering><requestLimits maxAllowedContentLength="262144000" /></requestFiltering> <!-- maxAllowedContentLength is in bytes. Defaults to 30,000,000 -->
        </security>
</system.webServer>

当我们遇到这个问题时,我们不得不根据这篇KB文章增加缓冲区大小限制: http://support.microsoft.com/kb/944886/en-us

我知道这提到了ASP,但我相信它也适用于ASP.NET。

修改:这是一个可能与您的问题更相关的链接,并提供其他选项:
http:// weblogs.asp.net/jgalloway/archive/2008/01/08/large-file-uploads-in-asp-net.aspx

404并且缺少Page_Load:IIS只能在服务器上完成POST后处理请求。因此,如果POST失败(由于其大小),则无法触发页面的事件。

您可以尝试使用NeatUpload http://www.brettle.com/neatupload 。 从手册:<!>“;默认情况下,NeatUpload不会直接限制上传的大小。<!>

你也可以试试 Velodoc XP Edition ,它比NeatUpload有几个优势,包括它使用的事实ASP.NET Ajax扩展。有关详细信息,另请参见 Velodoc网站

你说:

但是1536000只有1.5MB?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top