1. Αιτίες του προβλήματος Στο συνημμένο "Post-Release Problems" των στατιστικών σφαλμάτων μετά την κυκλοφορία ενός έργου, υπάρχουν:
Ως συσσώρευση εμπειρίας, αυτά τα προβλήματα, οι αιτίες και οι λύσεις θα συμπεριληφθούν στη λίστα ελέγχου και, στη συνέχεια: Η πρώτη ερώτηση: Είναι ακριβής αναφορά το ανώτατο όριο της παραμέτρου URL; Ποιο είναι το ανώτατο όριο; Δεύτερη ερώτηση: Γιατί υπάρχει όριο στα δεδομένα όταν POST; Είναι το όριο 128K; 2. Ανάλυση προβλημάτων 1. Το πρώτο: 1) Δεν υπάρχει ανώτατο όριο παραμέτρων στη διεύθυνση URL. Το πρόβλημα είναι στην πραγματικότητα ότι ο IE έχει όριο μήκους στις διευθύνσεις URL. 2) Η προδιαγραφή πρωτοκόλλου HTTP επίσης δεν περιορίζει το μήκος της διεύθυνσης URL. Αυτό το όριο είναι ένας περιορισμός που επιβάλλεται από ένα συγκεκριμένο πρόγραμμα περιήγησης και διακομιστή. Το όριο του IE στο μήκος URL είναι 2083 byte (2K+35). Για άλλα προγράμματα περιήγησης όπως το Netscape, το FireFox κ.λπ., δεν υπάρχει θεωρητικό όριο μήκους και το όριο του εξαρτάται από την υποστήριξη του λειτουργικού συστήματος. [Αναφ. 1] 3) "Οι παράμετροι μεταβλητού μήκους μεταβιβάζονται μέσω URL" σημαίνει στην πραγματικότητα ότι χρησιμοποιείται η μέθοδος GET κατά την υποβολή της φόρμας και όχι η μέθοδος POST. Αυτό που προκαλεί αυτό το πιθανό σφάλμα είναι η χρήση της μεθόδου GET για την υποβολή δεδομένων φόρμας. Επειδή η μέθοδος GET μεταβιβάζει τα δεδομένα στη διεύθυνση URL στον διακομιστή για επεξεργασία. 4) Σημειώστε ότι αυτό το όριο είναι ολόκληρο το μήκος της διεύθυνσης URL, όχι μόνο το μήκος δεδομένων της τιμής της παραμέτρου. 5) Δεδομένου ότι είναι το όριο του IE στο μήκος της διεύθυνσης URL, τόσο η μέθοδος GET όσο και η μέθοδος POST έχουν αυτόν τον περιορισμό. (Ανατρέξτε στο σχετικό έγγραφο για λεπτομέρειες σχετικά με τις μεθόδους GET και POST του ΕΝΤΥΠΟΥ [Αναφορά 2]) Συστάσεις: 1) Κατανοήστε το περιβάλλον στο οποίο βρίσκεται η εφαρμογή, όπως το περιβάλλον προγράμματος περιήγησης και διακομιστή της διαδικτυακής εφαρμογής, και κατανοήστε τους συγκεκριμένους περιορισμούς παραμέτρων της. 2) Χρησιμοποιήστε τη μέθοδο POST όσο το δυνατόν περισσότερο για να υποβάλετε σύνθετα δεδομένα. Σημείωση: Όταν το FORM δεν γράφει το χαρακτηριστικό μεθόδου, η προεπιλογή είναι να χρησιμοποιήσετε τη μέθοδο GET. Συμπέρασμα (γράψτε στη λίστα ελέγχου): Κατά την υποβολή δεδομένων χρησιμοποιώντας τη μέθοδο GET, πρέπει να λάβετε υπόψη το όριο μήκους URL των 2083 byte στο περιβάλλον IE. 2. Το δεύτερο: 1) Θεωρητικά, το POST δεν έχει όριο μεγέθους. Η προδιαγραφή πρωτοκόλλου HTTP επίσης δεν έχει όριο μεγέθους. 2) Το "Υπάρχει όριο μεγέθους 128K για δεδομένα POST" δεν είναι αρκετά ακριβές, δεν υπάρχει όριο στα δεδομένα POST και η επεξεργαστική ισχύς του επεξεργαστή του διακομιστή παίζει περιοριστικό ρόλο. 3) Για προγράμματα ASP, υπάρχει όριο μήκους δεδομένων 100K όταν το αντικείμενο Request επεξεργάζεται κάθε πεδίο φόρμας. Αλλά με το Request.BinaryRead δεν υπάρχει τέτοιος περιορισμός. Για λύσεις που απαιτούν επεξεργασία περισσότερων από 100 δεδομένων τομέα φόρμας, ανατρέξτε στην ενότητα [Αναφορά 3] παρακάτω. 4) Κατ' επέκταση, για τις υπηρεσίες IIS 6.0, η Microsoft αύξησε τους περιορισμούς για λόγους ασφαλείας [Αναφορά 4]. Πρέπει επίσης να προσέξουμε:
Οι υπηρεσίες IIS 6.0 έχουν από προεπιλογή έως 200 KB δεδομένων ASP POST και το όριο είναι 100 KB ανά πεδίο φόρμας.
Το προεπιλεγμένο μέγεθος των αρχείων αποστολής IIS 6.0 είναι 4 MB.
Οι υπηρεσίες IIS 6.0 έχουν από προεπιλογή μια μέγιστη κεφαλίδα αίτησης 16 KB.
Αυτοί οι περιορισμοί δεν ήταν διαθέσιμοι πριν από το IIS 6.0. Συστάσεις: 1) Η γνώση των προεπιλεγμένων ρυθμίσεων του περιβάλλοντος λειτουργίας θα σας βοηθήσει να σχεδιάσετε και να λύσετε γρήγορα προβλήματα που προκύπτουν. 2) Θα πρέπει να ληφθεί υπόψη η έκδοση διακομιστή. Κάθε έκδοση των υπηρεσιών IIS έχει διαφορετικές προεπιλεγμένες ρυθμίσεις για αυτές τις παραμέτρους, επομένως, εάν είναι απαραίτητο, βρείτε πληροφορίες και συντάξτε έναν πίνακα σύγκρισης. Με αυτόν τον τρόπο, υπάρχει μια αναφορά για ανάπτυξη και δοκιμή. 3) Αυτοί οι περιορισμοί του IIS 6.0 είναι στην πραγματικότητα απλώς οι προεπιλεγμένες ρυθμίσεις του και μπορείτε να τις τροποποιήσετε στο πραγματικό περιβάλλον εφαρμογής. Στο WINNT/system32/inetsrv/MetaBase.xml, ο προεπιλεγμένος ορισμός είναι: AspBufferingLimit="4194304" αντιστοιχεί στο μέγιστο μέγεθος του μεταφορτωμένου αρχείου AspMaxRequestEntityAllowed="204800" αντιστοιχεί στη μέγιστη ποσότητα δεδομένων στο POST ... Συμπέρασμα (γράψτε στη λίστα ελέγχου): Όταν χρησιμοποιείτε ASP, πρέπει να λάβετε υπόψη ότι η φόρμα POST έχει όριο 100 KB ανά πεδίο για γενική επεξεργασία ανάγνωσης. Σκεφτείτε εάν θα χρησιμοποιήσετε το Request.Binary.
|