Fragensteller
IIS 7.5 CGI Buffer Problem ?

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
- Verschoben Andrei TalmaciuModerator Freitag, 25. Juni 2010 06:45 IIS Thema (aus:Windows Server)
- Typ geändert Stefan FalzModerator Donnerstag, 17. April 2014 21:18 Thread ohne bestätigte Lösung abgeschlossen
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: "Toconfigure a size limit for a specific HTTP header"):Configure Request Filters in IIS 7[..]Configure request limitsTo configure a value for the maximum allowed length of content, use thefollowing syntax:appcmd set config /section:requestfiltering/requestlimits.maxallowedcontentlength: unitThe variable requestlimits.maxallowedcontentlength unit specifies themaximum length of content.For example, to specify 30000000 as the maximum length of content, type thefollowing at the command prompt, and then press ENTER:appcmd set config /section:requestfiltering/requestlimits.maxallowedcontentlength:30000000To configure a value for the maximum allowed length of an incoming URL, usethe following syntax:appcmd set config /section:requestfiltering /requestlimits.maxurl: unitThe variable requestlimits.maxurl unit specifies the maximum length of anincoming URL.For example, to specify 4096 as the maximum incoming URL length, type thefollowing at the command prompt, and then press ENTER:appcmd set config /section:requestfiltering /requestlimits.maxurl:4096To configure a value for the maximum allowed length of an incoming querystring, use the following syntax:appcmd set config /section:requestfiltering /requestlimits.maxquerystring:unitThe variable requestlimits.maxquertystring unit specifies the maximum lengthof an incoming query string.For example, to specify 2048 as the maximum incoming query string, type thefollowing at the command prompt, and then press ENTER:appcmd set config /section:requestfiltering/requestlimits.maxquerystring:2048To configure a size limit for a specific HTTP header, use the followingsyntax: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 avalue of contoso.com, type the following at the command prompt, and thenpress ENTER:appcmd set config /section:requestfiltering/+requestlimits.headerLimits.[header='contoso.com',sizelimit='2048'][..]Source: http://technet.microsoft.com/en-us/library/cc754791.aspxP.S.: IIS 5 ist doch ein alter Hut.. ;) .. probiers jetzt mal damit:IIS 7.0 - Explore The Web Server For Windows Vista And Beyondhttp://msdn.microsoft.com/en-us/magazine/cc163453.aspxIntroduction to IIS 7 Architecturehttp://learn.iis.net/page.aspx/101/introduction-to-iis-7-architecture/Introducing IIS 7.0 Configuration Architecturehttp://technet.microsoft.com/en-us/library/cc268239.aspx--Tobias RedelbergerStarNET Services (HomeOffice)Frankfurter Allee 193D-10365 BerlinTel: +49 (30) 86 87 02 678Mobil: +49 (163) 84 74 421Email: T.Redelberger@starnet-services.netWeb: http://www.starnet-services.net
-
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
-
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 -
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
-
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 -
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
-
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
-
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
-
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