Как я могу заставить IIS 7 сбрасывать вывод?

В IIS 6, используя Perl, я мог отправлять поток вывода клиенту, а не буферизовать все это и сразу выгружать. Это позволило использовать такие вещи, как индикаторы выполнения и тому подобное.

Как я могу сделать то же самое в IIS 7?


person Frakkle    schedule 26.03.2009    source источник


Ответы (3)


В IIS 7 после создания сопоставления сценария Perl Script вы можете добавить атрибут, который это исправит.

Вы изменяете файл %windir%\system32\inetsrv\config\applicationHost.control и находите сопоставление сценария по имени (в моем случае Perl-Script). Затем добавьте атрибут responseBufferLimit в XML, например:

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

Это приводит к тому, что IIS работает так же, как и в IIS 6, с отключенной буферизацией.

person Frakkle    schedule 26.03.2009

Вы можете настроить 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>

Поместите этот файл в корневой веб-каталог. Он переопределит настройки сервера для *.pl.

person spoulson    schedule 08.10.2014

ЕДИНСТВЕННАЯ вещь, которая работала для меня в IIS 7.5 (Windows 7), была следующей командой, запускаемой из CMD:

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

ПРИМЕЧАНИЕ. Вы должны заменить PHP_via_FastCGI на имя вашего обработчика PHP в "Handler Mappings".

person Frank Forte    schedule 28.12.2018