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

Joh*_*sen 28 iis iis-7 asp-classic

最近,我必须在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>
Run Code Online (Sandbox Code Playgroud)

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

ASP_0104_:_80004005|Operation_not_Allowed

谷歌搜索指出增加maxAllowedContentLength如上所述.所以我对这些想法感到满意,但相信聪明的stackoverflow人群能够在比我写这个问题所花费的时间更短的时间内解决这个问题.

Ant*_*nes 33

maxAllowedContentLength控制多少数据被允许在响应被发送.但是,您希望控制请求中可以接受的数量.这由配置文件部分中元素的maxRequestEntityAllowed属性处理.一个例子可能如下: - limitsasp

<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>
Run Code Online (Sandbox Code Playgroud)

您可以在IIS7管理器中的ASP功能的属性网格中的"限制属性"类别下进行配置.或者,您可以使用命令行: -

appcmd set config /section:asp /limits.maxRequestEntityAllowed:104857600
Run Code Online (Sandbox Code Playgroud)

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


小智 6

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


Lan*_*art 5

首先,@ AnthonyWJones 答案非常有帮助,但并不能解决我的问题,实际上它有点不准确,因此我正在编写此代码。

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>
Run Code Online (Sandbox Code Playgroud)

所述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>
Run Code Online (Sandbox Code Playgroud)

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

此设置非常重要,因为它定义了IIS请求(而不是像以前的配置值那样的ASP请求)中的最大字节数,它与响应的内容长度无关 (如前所述)。无论设置什么maxRequestEntityAllowed(特定于设置),如果maxAllowedContentLength未设置或尝试上传更多内容,则默认设置为28 MB(大约),您都会收到HTTP 404错误响应。

链接