在IIS 6中,使用Perl,我能够将一个输出流发送到客户端,而不是缓冲整个事情并将其全部转储出去。这允许使用诸如进度条之类的东西。
如何在IIS 7中完成同样的事情?
答案 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 "%s" %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 。