如何在IIS 7上的经典ASP中启用大文件的上传?

问题描述 投票:28回答:6

最近,我不得不在W2K8服务器上的IIS 7.5中使用一个旧的ASP应用程序。几乎所有内容都可以正常运行,除了我似乎无法接受大于200kB的上传内容。我确实找到了一个设置,从我能理解的窍门开始,在applicationHost.config中,我将最大请求大小设置为100 MB,如下所示:

<location path="TheNameOfMySite">
    <system.webServer>
        <security>
            <requestFiltering>
                <requestLimits maxAllowedContentLength="104857600" />
            </requestFiltering>
        </security>
    </system.webServer>
</location>

不幸的是,这似乎什么也没做,它仍然拒绝接受任何大于200 KB的文件,并且在日志文件中给出了此错误消息:

ASP_0104 _:_ 80004005 | Operation_not_Allowed

Google上的搜索指向增加maxAllowedContentLength,如上所述。所以我没有什么新主意,但是我相信聪明的stackoverflow人群可以在比我写这个问题花费的时间更少的时间内解决这个问题。

iis iis-7 asp-classic
6个回答
34
投票

maxAllowedContentLength控制在响应中允许发送多少数据。但是,您想控制请求中可以接受的数量。这由配置文件的maxRequestEntityAllowed部分中limits元素的asp属性处理。一个例子可能看起来像:-

<system.webServer>
  <asp>
     <cache diskTemplateCacheDirectory="%SystemDrive%\inetpub\temp\ASP Compiled Templates" />
     <limits scriptTimeout="00:02:00"
        queueConnectionTestTime="00:00:05"
        requestQueueMax="1000"
        maxRequestEntityAllowed="104857600"
        />
  </asp>

您可以在IIS7管理器中的ASP功能的属性网格中的“限制属性”类别下进行配置。另外,您可以使用命令行:-

appcmd set config /section:asp /limits.maxRequestEntityAllowed:104857600

请注意,扩展此值会增加DOS攻击的窗口,在该窗口中,攻击者会将大量内容发送到服务器,因此不要试图将其扩展到超出您真正需要的范围。


6
投票

在Windows 2008上-进入管理工具-服务器管理器-展开角色-展开Web服务器-单击IIS-并查找您要更改文件大小限制的Web实例,然后进入选项“ ASP”展开“限制属性”和您需要更改的属性是“最大请求实体正文限制”。文件大小始终以字节为单位,因此请使用任何在线计算器来计算字节到KB或MB的转换。


5
投票

首先@AnthonyWJones answer很有帮助,但没有解决我的问题,实际上,它有点不准确,因此我正在编写此文件。

IIS 6中的大量上载是轻而易举的事,您需要担心一个配置值

AspMaxRequestEntityAllowed

AspMaxRequestEntityAllowed属性指定ASP请求的实体主体中允许的最大字节数。如果存在Content-Length标头,并且指定的数据量大于AspMaxRequestEntityAllowed的值,则IIS返回403错误响应。此属性在功能上与MaxRequestEntityAllowed相关,但特定于ASP请求。在常规的万维网发布服务(WWW服务)级别,您可以将MaxRequestEntityAllowed属性设置为1 MB,但是,如果您知道特定的ASP,则可以选择将[[AspMaxRequestEntityAllowed设置为较低的值。应用程序处理少量数据。


[随着IIS 7的引入,以及使用* .config文件的新的基于XML的分层结构配置系统,所有这些都变得更加复杂。

现在您需要正确配置两个设置,大文件上传才能按预期工作,并且它们都位于配置的不同区域。

maxRequestEntityAllowed

<configuration> <system.webServer> <asp> <limits maxRequestEntityAllowed="200000" /> </asp> <system.webServer> <configuration>

maxRequestEntityAllowed

属性指定ASP请求的实体主体中允许的最大字节数。如果存在Content-Length标头,并且指定的数据量大于maxRequestEntityAllowed的值,则IIS返回HTTP 403错误响应。

重要:

如从下面的默认设置中看到的那样,配置上述设置将工作到一定程度,但是一旦达到该默认设置,无论maxRequestEntityAllowed设置为什么,服务器都会响应HTTP 404 Not Found错误响应。一开始这让我感到困惑,因为我认为返回代码404错误响应的一定是我的代码。

maxAllowedContentLength

<configuration> <system.webServer> <security> <requestFiltering> <requestLimits maxAllowedContentLength="30000000" /> </requestFiltering> </security> </system.webServer> </configuration>

指定请求中内容的最大长度,以字节为单位。默认值为30000000,大约为28.6MB。

此设置非常重要,因为它定义了IIS请求(而不是像以前的配置值那样的ASP请求)中的最大字节数。

与响应的内容长度无关

(之前已经说过)。无论将maxRequestEntityAllowed(特定于的设置)设置为什么,如果未设置maxAllowedContentLength或尝试上传更多内容,则默认设置为28 MB(大约),您都会收到HTTP 404错误回应。链接


2
投票
对于无法从CMD执行appcmd命令的用户,您需要将路径更改为C:\ windows \ system32 \ inetsrv,因为该命令位于该文件夹中。

2
投票
这里接受的解决方案对我不起作用。首先,我的配置中没有指定元素,并且我不想破坏配置文件。

我也尝试过Request Limits <requestLimits> <requestLimits>,但也没有用。最后,我遇到了此处显示的解决方案,它可以正常工作。

  1. 打开IIS 7管理单元
  2. 选择要启用的网站以接受大文件上传。
  3. 在主窗口中双击“请求过滤”
  4. 一旦打开窗口,您可能会在选项卡列表的顶部看到,例如:文件扩展名,规则,隐藏的段等...

    无论您选择哪个选项卡,在主窗口中单击鼠标右键都将显示一个弹出上下文菜单。在菜单中选择“编辑功能设置”。

  5. 在弹出的表单上,修改“允许的最大内容长度(字节)”

0
投票
进入IIS,选择您的站点并展开它,然后单击右侧面板中的ASP图标。

打开“限制属性”图标,然后将“最大请求实体限制”中的值更改为大于200000(200kb)的值。 2000000将是2mb,20000000将是20mb。根据您的需要设置并应用。就是这样!

ENJOY ..

© www.soinside.com 2019 - 2024. All rights reserved.