|
|
Veröffentlicht am 08.03.2018 10:18:07
|
|
|
|

1. Ursachen des Problems Im Anhang "Post-Release-Probleme" der Bugstatistiken nach der Veröffentlichung eines Projekts gibt es:
Als Erfahrungsakkumulation werden diese Probleme, Ursachen und Lösungen in die Checkliste aufgenommen und dann: Die erste Frage: Ist die obere Grenze des URL-Parameters eine genaue Referenz? Was ist die Obergrenze? Zweite Frage: Warum gibt es eine Datenbegrenzung bei POST? Liegt das Limit bei 128.000? 2. Problemanalyse 1. Der erste: 1) Es gibt keine obere Parametergrenze in der URL. Das Problem ist tatsächlich, dass IE eine Längenbegrenzung für URLs hat. 2) Die HTTP-Protokollspezifikation begrenzt auch nicht die Länge der URL. Diese Begrenzung ist eine Beschränkung, die von einem bestimmten Browser und Server auferlegt wird. IEs Grenze für die URL-Länge beträgt 2083 Bytes (2K+35). Bei anderen Browsern wie Netscape, Firefox usw. gibt es keine theoretische Längenbegrenzung, und das Limit hängt von der Unterstützung des Betriebssystems ab. [Ref. 1] 3) "Variable-Length-Parameter werden über URL übermittelt" bedeutet tatsächlich, dass die GET-Methode beim Einreichen des Formulars verwendet wird, nicht die POST-Methode. Was diesen potenziellen Fehler verursacht, ist die Verwendung der GET-Methode zur Einreichung von Formulardaten. Weil die GET-Methode die Daten in der URL an den Server zur Verarbeitung weiterleitet. 4) Beachten Sie, dass dieses Limit die gesamte URL-Länge ist, nicht nur die Datenlänge Ihres Parameterwerts. 5) Da dies IEs URL-Länge begrenzt, haben sowohl die GET-Methode als auch die POST-Methode diese Begrenzung. (Bitte siehe das zugehörige Dokument für Details zu den GET- und POST-Methoden des FORMULARS [Ref. 2]) Empfehlungen: 1) Verstehen Sie die Umgebung, in der sich die Anwendung befindet, wie z. B. die Browser- und Serverumgebung der Webanwendung, und verstehen Sie deren spezifische Parameterbeschränkungen. 2) Die POST-Methode so weit wie möglich verwenden, um komplexe Daten einzureichen. Hinweis: Wenn FORM das Methodenattribut nicht schreibt, ist standardmäßig die Verwendung der GET-Methode. Fazit (schreiben Sie zur Checkliste): Wenn Sie Daten mit der GET-Methode einreichen, müssen Sie die URL-Längenbegrenzung von 2083 Bytes in der IE-Umgebung berücksichtigen. 2. Der zweite: 1) Theoretisch hat POST keine Größenbegrenzung. Auch die HTTP-Protokollspezifikation hat keine Größenbegrenzung. 2) "Es gibt eine Größenbegrenzung von 128K für POST-Daten" ist nicht genau genug, es gibt keine Begrenzung für POST-Daten, und die Rechenleistung des Prozessors des Servers spielt eine limitierende Rolle. 3) Für ASP-Programme gibt es eine Datenlängenbegrenzung von 100.000, wenn das Request-Objekt jedes Formularfeld verarbeitet. Aber mit Request.BinaryRead gibt es keine solche Beschränkung. Für Lösungen, die die Verarbeitung von mehr als 100.000 Formular-Domänendaten erfordern, siehe bitte [Ref. 3] unten. 4) Im weiteren Sinne hat Microsoft für IIS 6.0 die Sicherheitsbeschränkungen erhöht [Ref. 4]. Wir müssen auch auf Folgendes achten:
IIS 6.0 hat standardmäßig maximal 200 KB ASP POST-Daten, und die Grenze beträgt 100 KB pro Formularfeld.
Die Standardgröße von IIS 6.0-Upload-Dateien beträgt 4 MB.
IIS 6.0 hat standardmäßig einen maximalen Request-Header von 16 KB.
Diese Einschränkungen waren vor IIS 6.0 nicht verfügbar. Empfehlungen: 1) Die Kenntnis der Standardeinstellungen der laufenden Umgebung hilft Ihnen, Probleme zu entwerfen und schnell zu lösen. 2) Die Serverversion sollte in Betracht gezogen werden. Jede IIS-Version hat unterschiedliche Standardeinstellungen für diese Parameter, daher sollten Sie bei Bedarf Informationen suchen und eine Vergleichstabelle erstellen. Auf diese Weise gibt es eine Referenz für Entwicklung und Test. 3) Diese Einschränkungen von IIS 6.0 sind eigentlich nur die Standardeinstellungen, und du kannst sie in der eigentlichen Anwendungsumgebung anpassen. In WINNT/system32/inetsrv/MetaBase.xml lautet die Standarddefinition: AspBufferingLimit="4194304" entspricht der maximalen Größe der hochgeladenen Datei AspMaxRequestEntityAllowed="204800" entspricht der maximalen Datenmenge in POST ... Fazit (schreiben Sie zur Checkliste): Bei der Verwendung von ASP muss man bedenken, dass das POST-Formular ein Limit von 100 KB pro Feld für die allgemeine Leseverarbeitung hat. Überlege, ob du Request.Binary verwenden sollst.
|
Vorhergehend:asp.net mvc stellt den Formularbeitrag so ein, dass HTML eingereicht werden kannNächster:System.Linq.Dynamisch
|