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

时间:2010-01-01 19:11:51

标签: 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>

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

ASP_0104_:_80004005|Operation_not_Allowed

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

6 个答案:

答案 0 :(得分:33)

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攻击的窗口,攻击者会将大量内容发送到服务器,因此不要试图将其扩展到您真正需要的范围之外。

答案 1 :(得分:6)

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

答案 2 :(得分:4)

首先关闭@AnthonyWJones answer非常有帮助,但没有解决我的问题,事实上它有点不准确,因此我写这篇文章。< / p>

IIS 6中的大型上传是一个轻而易举的问题,您需要担心一个配置值

  

<强> ASPMaxRequestEntityAllowed把

     
    

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

  

随着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错误响应。

链接

答案 3 :(得分:2)

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

答案 4 :(得分:1)

这里接受的解决方案对我不起作用。首先,我的配置中没有指定元素,我不想搞砸配置文件。

我也尝试了@shoaib-suleman's solution,但它也没有用。最后,我遇到了这里显示的解决方案并且有效。

  1. 打开IIS 7 SnapIn

  2. 选择要启用以接受大文件上传的网站。

  3. 在主窗口中双击“请求过滤”

  4. 打开窗口后,您可能会在顶部看到一个标签列表,例如:文件扩展名,规则,隐藏的细分等等......

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

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

答案 5 :(得分:1)

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

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

享受..