2016-03-30 32 views
0

这让我疯狂。我们最近迁移到亚马逊EC2服务,现在我们的应用程序中的文件上传(使用Motobit巨大的ASP上传)在任何大于120kb的文件上失败。我知道默认限制是200kb,但是对于大于120的任何错误,错误编号为-2147024893(0x80070003),没有描述/细节。我无法在事件查看器或IIS日志中找到任何内容来帮助我指出任何方向。上传文件与经典的ASP - 不能大于120 KB?

我确实进入了IIS下的ASP站点,并将最大请求实体主体数限制从200000更改为400000,并没有任何区别。我甚至尝试了一个iisreset,并且在进行更改之后重新启动了服务器,以确保它在无望的绝望中得到应用。

我试过了许多不同的文件和文件大小。我能够上传的最多的是一个120KB的文件。它不是一个代码问题,因为这个相同的代码在我的本地盒子(IIS 7)上没有问题地工作,并且直接从我们的旧服务器上直接拷贝过来。

ASP Limits Properties 编辑:我也曾尝试没有结果如下:

设置最大的请求过滤设置允许的内容长度30000000(30 MB)。

添加手动编辑的web.config和requestLimits maxAllowedContentLength =“15728640”和的httpRuntime的maxRequestLength =“2147483647”

+0

您是否尝试过使用另一个上传组件,如果有另一个(或多个)测试?只是为了说明这实际上是一个“不是代码”的问题。 – statosdotcom

+0

我还没有。这看起来像是IIS 8.5或其他配置问题。 Thjs相同的代码在IIS 7上本地工作,并在旧服务器上完美工作。我们有大约十几个地方可以通过表单上传文件,并且只要有文件或文件组合超过126KB,就会在新服务器上失败。您可以上传一个文件或125个文件的组合,它完美的工作。 –

回答

1

我希望这可以帮助别人的未来,因为我敲我的头靠在我的办公桌上,试图解决这个。

该组件的最大内存设置为128K。任何大于此的文件都不会存储在内存中,而是存储在临时文件夹中。默认的临时文件夹是C:\ Windows \ Temp。

罪魁祸首是在高级设置下的应用程序池设置。 '加载用户配置文件'被设置为true。导致组件试图在C:\ Users中使用临时路径,这是失败的。有3个解决方案:

  1. 集加载用户配置文件=假
  2. 分配在代码中的临时文件夹(Form.TempPath = “”)
  3. C语言创建的文件夹:\用户(用Response.write form.CheckRequirements)

对于我们的情况,#1是完美的解决方案。 #2需要编辑超过100个文件,并且#3只在需要将#1设置为真时需要。