如何强制IIS 7刷新输出?

时间:2009-03-26 19:02:36

标签: perl iis iis-7

在IIS 6中,使用Perl,我能够将一个输出流发送到客户端,而不是缓冲整个事情并将其全部转储出去。这允许使用诸如进度条之类的东西。

如何在IIS 7中完成同样的事情?

3 个答案:

答案 0 :(得分:4)

在IIS 7下,一旦创建了Perl脚本脚本映射,就可以添加一个可以解决此问题的属性。

修改%windir%\ system32 \ inetsrv \ config \ applicationHost.control文件并按名称查找脚本映射(在我的示例中为Perl-Script)。然后将responseBufferLimit属性添加到XML中,例如:

<add name="Perl-Script" path="*.pl" blah blah blah responseBufferLimit="0" />

这会导致IIS像在IIS 6中一样运行,并缓冲关闭。

答案 1 :(得分:1)

您可以自定义Web应用程序的web.config以设置responseBufferLimit="0",而不是更改全局设置。示例web.config:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <handlers>
            <add name="Perl CGI for .pl (custom)" path="*.pl" verb="GET,HEAD,POST" modules="CgiModule" scriptProcessor="C:\Perl64\bin\perl.exe &quot;%s&quot; %s" resourceType="File" requireAccess="Script" responseBufferLimit="0" />
        </handlers>
    </system.webServer>
    <system.web>
        <identity impersonate="false" />
    </system.web>
</configuration>

将此文件放在Web根目录中。它将覆盖*.pl的服务器设置。

答案 2 :(得分:0)

在IIS 7.5(Windows 7)中对我唯一有效的是从CMD运行以下命令:

appcmd.exe set config /section:handlers "/[name='PHP_via_FastCGI'].ResponseBufferLimit:0"

注意:您必须在“处理程序映射”中用您的PHP处理程序的名称替换 PHP_via_FastCGI