Jan Huss: IIS: Perl und POST-Methode

Hallo Ihr,

ich möchte beim IIS per POST-Methode Daten an ein cgi-Skript übergeben. Leider startet der IIS zwar den Perl-Thread, beendet diesen aber nicht. --> Das Skript hängt sich auf. Kommentiere ich die 1. Zeile aus, so geht es.

Habt Ihr Lösungsansätze?

Danke. Gruß Jan

Mein Skript:

read(STDIN, $inputData, $ENV{'CONTENT_LENGTH'});
use CGI qw(:standard);
print header();

  1. Hallo,

    ich möchte beim IIS per POST-Methode Daten an ein cgi-Skript übergeben. Leider startet der IIS zwar den Perl-Thread, beendet diesen aber nicht. -->

    read(STDIN, $inputData, $ENV{'CONTENT_LENGTH'});
    use CGI qw(:standard);
    print header();

    Das Skript hängt sich auf. Kommentiere ich die 1. Zeile aus, so geht es.

    Habt Ihr Lösungsansätze?

    Das hat nichts mit dem IIS zu tun, sondern mit einem groben Fehler in Deinem Script. Die Zeile mit 'read(...)' ist definitiv falsch, wenn Du das CGI-Modul verwendest. Dieses beinhaltet auch das Einlesen von STDIN,  somit versucht das Script 2x$ENV{'CONTENT_LENGTH'} einzulesen, was aber nicht geht da von STDIN ja nur 1x$ENV{'CONTENT_LENGTH'} gelesen werden kann.

    IMHO sind all diese selbstgestrickten Einlesefunktionen in der Regel nicht sinnvoll, da Module wie CGI.pm dies wesentlich ausgereifter erledigen.

    Grüße
      Klaus

    1. Hm,

      ok - das sehe ich ein.

      Jedoch funktioniert das im Normalfall ohne Probleme. Nur der IIS meckert da.

      Gruß Jan

      Das hat nichts mit dem IIS zu tun, sondern mit einem groben Fehler in Deinem Script. Die Zeile mit 'read(...)' ist definitiv falsch, wenn Du das CGI-Modul verwendest. Dieses beinhaltet auch das Einlesen von STDIN,  somit versucht das Script 2x$ENV{'CONTENT_LENGTH'} einzulesen, was aber nicht geht da von STDIN ja nur 1x$ENV{'CONTENT_LENGTH'} gelesen werden kann.

      1. Hallo,

        Jedoch funktioniert das im Normalfall ohne Probleme. Nur der IIS meckert da.

        Ich denke nicht, daß der IIS da meckert, sondern einch Perl in Ermangelung an weiteren Daten 'hängen' bleibt. Abgesehen davon ist das ein sinnloser Code. Entweder mit oder ohne CGI.pm, aber etwas zweimal machen zu wollen hat absolut und überhaupt keinen Sinn, egal ob's 'normalerweise' funktioniert oder nicht.

        Grüße
          Klaus