none
IIS 7.5 CGI Buffer Problem ? RRS feed

  • Allgemeine Diskussion

  • Hallo zusammen,

     

    ich sitze hier vor einem anscheinend unlösbaren Problem. Ich habe einige CGI Anwendungen die bislang auf einem W2K Server unter IIS5 einwandfrei liefen. Jetzt soll das ganze auf einen W2K8R2 Server ( Webserver Version ) übertragen werden. Soweit so gut, CGI Erweiterungen installieren, Anwendungen erstellen usw. Alle Anwendungen laufen augenscheinlich auch einwandfrei. Allerdings kommt es bei einer Anwendung zu dem Problem, das der POST Request des Clients teilweise verschluckt wird. Im http Header wird die Länge des POS Request korrekt angeben, beim auslesen der Konsole ist aber immer bei 9 bis 10 Kilobyte Schluss. Kleinere Request werden immer korrekt abgearbeitet. Meine Vermutung ist irgendeine Beschränkung des Buffers den es bei IIS5 so noch nicht gegeben hat. Allerdings finde ich im IIS 7.5 keine passende Stelle. Alle Werte in  der Konfiguration  die vom Namen her eine Abhängigkeit suggerieren haben keine Auswirkung auf dieses Problem.

     

    Ich hoffe es gibt hier den Experten, der sagt.. „ das ist doch ein alter Hut“

     

    Danke im Voraus

     

    Werner Beckmann

    Donnerstag, 24. Juni 2010 14:17

Alle Antworten

  • Hi Werner,
     
    > ich sitze hier vor einem anscheinend unlösbaren Problem. Ich habe einige
    > CGI Anwendungen
    > die bislang auf einem W2K Server unter IIS5 einwandfrei liefen. Jetzt soll
    > das ganze auf einen
    > W2K8R2 Server ( Webserver Version ) übertragen werden. Soweit so gut, CGI
    > Erweiterungen
    > installieren, Anwendungen erstellen usw. Alle Anwendungen laufen
    > augenscheinlich auch einwandfrei.
    > Allerdings kommt es bei einer Anwendung zu dem Problem, das der POST
    > Request des Clients
    > teilweise verschluckt wird. Im http Header wird die Länge des POS Request
    > korrekt angeben,
    > beim auslesen der Konsole ist aber immer bei 9 bis 10 Kilobyte Schluss.
    > Kleinere Request werden
    > immer korrekt abgearbeitet. Meine Vermutung ist irgendeine Beschränkung
    > des Buffers den es bei
    > IIS5 so noch nicht gegeben hat. Allerdings finde ich im IIS 7.5 keine
    > passende Stelle. Alle Werte in
    > der Konfiguration die vom Namen her eine Abhängigkeit suggerieren haben
    > keine Auswirkung auf
    > dieses Problem.
     
    ggf. bringt Dich folgendes auf die richtige Spur (s.a. speziell: "To
    configure a size limit for a specific HTTP header"):
     
    Configure Request Filters in IIS 7
    [..]
    Configure request limits
     
    To configure a value for the maximum allowed length of content, use the
    following syntax:
     
    appcmd set config /section:requestfiltering
    /requestlimits.maxallowedcontentlength: unit
     
    The variable requestlimits.maxallowedcontentlength unit specifies the
    maximum length of content.
     
    For example, to specify 30000000 as the maximum length of content, type the
    following at the command prompt, and then press ENTER:
     
    appcmd set config /section:requestfiltering
    /requestlimits.maxallowedcontentlength:30000000
     
    To configure a value for the maximum allowed length of an incoming URL, use
    the following syntax:
     
    appcmd set config /section:requestfiltering /requestlimits.maxurl: unit
     
    The variable requestlimits.maxurl unit specifies the maximum length of an
    incoming URL.
     
    For example, to specify 4096 as the maximum incoming URL length, type the
    following at the command prompt, and then press ENTER:
     
    appcmd set config /section:requestfiltering /requestlimits.maxurl:4096
     
    To configure a value for the maximum allowed length of an incoming query
    string, use the following syntax:
     
    appcmd set config /section:requestfiltering /requestlimits.maxquerystring:
    unit
     
    The variable requestlimits.maxquertystring unit specifies the maximum length
    of an incoming query string.
     
    For example, to specify 2048 as the maximum incoming query string, type the
    following at the command prompt, and then press ENTER:
     
    appcmd set config /section:requestfiltering
    /requestlimits.maxquerystring:2048
     
    To configure a size limit for a specific HTTP header, use the following
    syntax:
     
    appcmd set config /section:requestfiltering
    /+requestlimits.headerLimits.[header=' string ',sizelimit=' unit ']
     
    The variable header string specifies the header this restriction applies to.
    The variable sizelimit unit specifies the maximum size of this header.
     
    For example, to specify a maximum size of 2048 for headers that include a
    value of contoso.com, type the following at the command prompt, and then
    press ENTER:
     
    appcmd set config /section:requestfiltering
    /+requestlimits.headerLimits.[header='contoso.com',sizelimit='2048']
    [..]
    Source: http://technet.microsoft.com/en-us/library/cc754791.aspx
     
     
    P.S.: IIS 5 ist doch ein alter Hut.. ;) .. probiers jetzt mal damit:
     
    IIS 7.0 - Explore The Web Server For Windows Vista And Beyond
    http://msdn.microsoft.com/en-us/magazine/cc163453.aspx
     
    Introduction to IIS 7 Architecture
    http://learn.iis.net/page.aspx/101/introduction-to-iis-7-architecture/
     
    Introducing IIS 7.0 Configuration Architecture
    http://technet.microsoft.com/en-us/library/cc268239.aspx
     
    --
    Tobias Redelberger
    StarNET Services (HomeOffice)
    Frankfurter Allee 193
    D-10365 Berlin
    Tel: +49 (30) 86 87 02 678
    Mobil: +49 (163) 84 74 421
    Email: T.Redelberger@starnet-services.net
    Web: http://www.starnet-services.net
     
     
    Donnerstag, 24. Juni 2010 14:50
  • Hallo Tobias,

     

    danke für den Tipp. Diese Einstellungen habe ich gestern schon alle durchgespielt. Das schöne bei der R2 ist ja, das man diese Einstellungen nun auch mit der Maus schubsen kann, man(n) muss nicht mehr über die Befehlszeile gehen.

    Mein Problem hingen ist immer noch vorhanden, maximal 9470 Bytes dann ist Sense mit Request. Habe heute schon einen W2K Server mit II5 unter Hyper-V neu aufgesetzt, alle Updates drauf ( Achtung BSOD ) Web und Anwendungen übertragen und siehe da, alles funktioniert, gefühlt sogar schneller als auf der realen Maschine mit IIS7.5. Also W2K mag ein alter Hut sein, aber manchmal trägt sich ein alter Hut angenehmer als ein noch kneifender neuer J

     

    Ich hoffe aber, das ich das Problem noch finde, mit der Virtuellen Lösung habe ich jetzt erst einmal den Dampf aus der Sache genommen.

     

    Grüße

     

    Werner Beckmann

    Freitag, 25. Juni 2010 09:23
  • Hallo Werner,
    Mein Problem hingen ist immer noch vorhanden, maximal 9470 Bytes dann ist Sense mit Request.

    ist das Problem mit anderen Technologien reproduzierbar? Falls nicht, ist das Problem mit anderen POST Requests (anderer Inhalt) reproduzierbar?

    Ich hatte einen ähnlichen Fall, wurde vom Client allerdings etwas "fehlerhaftes" gesendet, was dann zu einem solchen Problem geführt hat. Da wurde dann im POST Body irgendwo \0 mitgegeben. Das führt in den meisten Fällen zu Problemen.

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Freitag, 25. Juni 2010 17:24
    Moderator
  • Hallo Stefan,

     

    also ich habe wie gesagt hier den IIS5.0 und den IIS7.0 und den IIS7.5

    Requests mit ein und demselben Inhalt funktionieren unter IIS5.0 einwandfrei und unter IIS7.X eben mit dem besagten Problem. Die Requests bestehen Inhaltlich aus einem XML Set. Der Witz dabei ist ja, dass ein und derselbe Request ( also gleicher Inhalt ) nicht immer an der selben Stelle abbricht, das kann schon mal um 10 – 60 Byte variieren. Ich werde, wenn Zeit ist, mal versuchen einen IIS6 unter die Finger zu bekommen, mal schauen ob dort schon ähnliche Probleme bestehen.

     

    Grüße

      Werner Beckmann

    Dienstag, 29. Juni 2010 07:30
  • Hallo Werner,

    Requests mit ein und demselben Inhalt funktionieren unter IIS5.0 einwandfrei und unter IIS7.X eben mit dem besagten Problem. Die Requests bestehen Inhaltlich aus einem XML Set. Der Witz dabei ist ja, dass ein und derselbe Request ( also gleicher Inhalt ) nicht immer an der selben Stelle abbricht, das kann schon mal um 10 – 60 Byte variieren.

    kannst du mal das, was als Request gesendet wird (wenn machbar, komplett und unverändert) als Zip-Datei bereitstellen? Ich würde mir das dann mal anschauen.

    Was genau verwendest Du denn für die Anwendung, die den Request verarbeiten soll? Perl? PHP? ...?

    Um zu testen, ob da generell was schief geht, könntest Du den Request auch mal ein ein Mini ASP.NET Script schicken und den Request in eine Datei speichern. Evtl. kann man da sehen, wo das Problem liegt.

    <%@ Page Language="vb" Debug="True" ResponseEncoding="UTF-8" %>
    <script runat="server">
    Protected Sub Page_Load( ByVal sender As Object, ByVal e As EventArgs ) Handles Me.Load
      Request.SaveAs( "X:\Ordner\SaveRequest.log", True )
    End Sub
    </script>
    


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Dienstag, 29. Juni 2010 08:04
    Moderator
  • Hallo Stefan,

     

    die Anwendung auf dem Server, wie auch die Anwendung beim Client sind CA-VO ( Visual Objects ) Programme. Auf der Clientseite eine GUI-Anwendung und auf der Serverseite eben eine CGI Basierte Anwendung.  Das mit den Daten, nun das ist so eine Sache. Ich werde mir da leider Dummy-Daten zusammen basteln müssen, da ich die Echtdaten hier nicht einstellen kann ( Kundendaten ). Werde ich aber mal vorbereiten

     

    Vielen Dank für die Unterstützung !!

     

    Werner Beckmann

    Mittwoch, 30. Juni 2010 07:05
  • Moin,

    so ich habe Dir einmal eine ZIP Datei zusammengepackt. Von dem Inhalt ( 11869 Byte ) werden jeweils immer nur 9431 Byte übertragen, dann ist ende im Gelände.

     

    Die Zip-Datei findest Du hier : www.tes.de/technet/Request.zip

     

    Gruß

     

    Werner Beckmann

    Mittwoch, 30. Juni 2010 09:15
  • Hallo Werner

     

    Ich habe das gleiche Problem mit meiner VO CGI. Habe ein Wait von 0.5 Sek eingebaut. Kann aber wohl nicht die Lösung sein. Hast du dein Problem gelöst ?

    Gruss

    Walter

    Samstag, 17. Dezember 2011 14:26
  • hi,

    habt ihr eine lösung für dieses problem gefunden?

    bei uns tritt das problem sowohl beim iis7, als auch beim iis8 auf.

    gruß,

    maximilian

    Montag, 3. Februar 2014 19:41
  • Moin,

    nein leider habe ich noch keine Lösung für das Problem. Langsam aber sicher holt mich dieses Übel aber wieder ein. Den IIS5 kann ich nicht mehr lange einsetzten.

    Ich habe jetzt auf einem 2008R2 System IIS7.5 zum Fehlerermitteln einmal den Fiddler als Reverse Proxy installiert. Sobald dieses Programm als Reverse Proxy auf dem Server läuft, ist der Fehler verschwunden, mein CGI Programm empfängt alle Daten und nichts wird abgeschnitten.

    Ebenso kann ich mit Hilfe von WireShark das Netzwerk überwachen, auch dort sehe ich, selbst im Fehlerfall, das der Request vom Client komplett an den Server gesendet wird, nur in meinem CGI kommt nicht alles an.

    Ich bin langsam echt am verzweifeln, wo und an welcher Stelle passiert der Fehler ??

    Bis die Tage

      Werner

    Donnerstag, 27. Februar 2014 09:48
  • Hallo Werner,

    auch wenn die Antwort leider etwas spät kommt, hilft Sie dir evtl. trotzdem.

    Du hattest mal eine Request.zip erstellt, die ist auch noch da und ich hab mir die mal angeschaut (Asche über mein Haupt, hab das damals wohl übersehen).

    Mit ASP.NET wird die Datei komplett übertragen, auch mit Classic ASP hab ich da keine Probleme feststellen können.

    Daher würde ich eigentlich annehmen, dass dein Programm das Problem verursacht, ggfs. auch der Client bzw. die dort verwendete Komponente zur Datenübertragung im Netzwerk. Gibt es dort Einstellungen für einen Puffer, der bei der Übertragung verwendet wird?


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Samstag, 5. April 2014 13:34
    Moderator