Αναγν. άρθρου: 925764 - Τελευταία αναθεώρηση: Παρασκευή, 24 Δεκεμβρίου 2010 - Αναθεώρηση: 2.0

Μήνυμα σφάλματος όταν ένα πρόγραμμα περιήγησης αποστέλλει μια αίτηση για μια σελίδα ενεργού διακομιστή σε ένα διακομιστή Web που εκτελεί τις υπηρεσίες IIS 6.0: "Απόκριση buffer υπέρβαση ορίου"

Συμβουλή συστήματοςΑυτό το άρθρο ισχύει για διαφορετικό λειτουργικό σύστημα από αυτό που χρησιμοποιείτε. Το περιεχόμενο του άρθρου που ενδέχεται να μην σας αφορά έχει απενεργοποιηθεί.

Σε αυτήν τη σελίδα

Ανάπτυξη όλων | Σύμπτυξη όλων

Συμπτώματα

Ας εξετάσουμε το ακόλουθο σενάριο. Ένα πρόγραμμα περιήγησης Web στέλνει μια αίτηση για μια σελίδα ενεργού διακομιστή (ASP) σε ένα διακομιστή Web που εκτελεί τις υπηρεσίες πληροφοριών Internet (IIS) 6.0. Της αίτησης ASP δημιουργεί ένα μεγάλο απόκριση. Σε αυτό το σενάριο, ενδέχεται να παρουσιαστούν τα ακόλουθα συμπτώματα:
  • Η απάντηση θα αποτύχει.
  • Παρουσιάζεται σφάλμα διακομιστή HTTP 500 και λαμβάνετε το ακόλουθο μήνυμα λάθους στο πρόγραμμα περιήγησης Web υπολογιστή-πελάτη:
    Σφάλμα αντικείμενο απόκρισης 'ASP 0251: 80004005'
    Υπέρβαση του ορίου Buffer αποκρίσεων
    /PageName.aspΓραμμήLineNumber
    ΣΗΜΕΙΩΣΗPageName.aspαντιπροσωπεύει το όνομα της σελίδας ASP που ζητήθηκε.LineNumberαντιπροσωπεύει τον τελευταίο αριθμό γραμμής στο αρχείο το οποίο έγινε η επεξεργασία του πριν από το buffer απόκρισης υπερβαίνει το όριο.
  • Το αρχείο καταγραφής των υπηρεσιών IIS περιέχει το ακόλουθο σφάλμα στο στοερώτημα uri CSΠεδίο (Field):
    |0|ASP_0251_:_80004005|Response_Buffer_Limit_Exceeded

Αιτία

Αυτό το ζήτημα παρουσιάζεται εξαιτίας μιας αλλαγής στη συμπεριφορά που είχε εισαχθεί στις υπηρεσίες IIS 6.0 και προστίθενται οι υπηρεσίες IIS 5.0. Αυτές οι εκδόσεις του IIS επιβάλλετε όριο buffer απόκρισης ASP προεπιλογή των 4 MB. Αυτό το όριο εμποδίζει μεγάλες απαντήσεις ASP επηρεάζεται αρνητικά τη διαδικασία IIS που φιλοξενεί από την εφαρμογή Web. Εάν μια αίτηση ASP δημιουργεί μια απόκριση που είναι μεγαλύτερη από το όριο του buffer έχει ρυθμιστεί, αντιμετωπίζετε τα συμπτώματα που αναφέρονται στην ενότητα "Συμπτώματα".

Προτεινόμενη αντιμετώπιση

Στα περισσότερα σενάρια, το όριο των 4 MB buffer είναι επαρκείς για αποκρίσεις ASP που αποστέλλονται σε υπολογιστές-πελάτες Web. Εάν αυτό το όριο δεν επαρκεί, χρησιμοποιήστε μία από τις ακόλουθες μεθόδους:

Μέθοδος 1: Μείωση του μεγέθους απόκρισης

Εάν η απόκριση είναι μεγαλύτερη από την προεπιλεγμένη τιμή 4 MB, το μέγεθος αυτό προκαλεί συχνά μια κακή εμπειρία. Το πρόγραμμα περιήγησης πρέπει να λάβει απόκριση μεγάλο μέσω του δικτύου. Στη συνέχεια, το πρόγραμμα περιήγησης πρέπει να αναλύσει και να εμφανίσετε μια πολύ μεγάλη ανταπόκριση HTML.

Εάν δεν διαθέτει το πρόγραμμα-πελάτη Web που λαμβάνει την απάντηση για να προβάλετε ολόκληρη απόκρισης ως μία μόνο σελίδα, μπορείτε να μειώσετε το μέγεθος της απόκρισης. Για παράδειγμα, μπορεί να ξαναγράψετε την εφαρμογή βασισμένη σε ASP ώστε να παρουσιάζονται σε ένα πλέγμα δεδομένων. Επομένως, ο υπολογιστής-πελάτης Web να περιηγηθείτε σε μία σελίδα δεδομένων κάθε φορά. Μπορείτε να χρησιμοποιήσετε τοGridViewη κλάση στο Microsoft ASP.NET για την επίτευξη αυτού του αποτελέσματος. Για περισσότερες πληροφορίες σχετικά με τοGridViewκλάση στο ASP.NET, επισκεφθείτε την ακόλουθη τοποθεσία της Microsoft Developer Network (MSDN) στο Web:
http://msdn2.Microsoft.com/en-us/library/System.Web.UI.webcontrols.GridView.aspx (http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.aspx)

Μέθοδος 2: Χρήση της μεθόδου Response.Flush

Εάν χρησιμοποιείτε ένα βρόχο σε σελίδες ASP στο αρχείο για να δημιουργήσετε ένα μεγάλο πίνακα, ούτε θα δημιουργήσουν δεδομένα, μπορείτε να χρησιμοποιήσετε τοResponse.FlushΗ μέθοδος. Όταν χρησιμοποιείτε αυτήν τη μέθοδο, μπορείτε ακόμα να να χρησιμοποιήσετε buffering. Ωστόσο, μπορείτε επίσης να έχετε πλήρη έλεγχο της ποσότητας δεδομένων που αποστέλλονται στο πρόγραμμα-πελάτη Web και μπορείτε να ελέγξετε το μέγεθος του buffer της απόκρισης. Για περισσότερες πληροφορίες σχετικά με τοResponse.Flushη μέθοδος, επισκεφθείτε την ακόλουθη τοποθεσία MSDN στο Web:
http://msdn2.Microsoft.com/en-us/library/ms525560.aspx (http://msdn2.microsoft.com/en-us/library/ms525560.aspx)

Μέθοδος 3: Απενεργοποίηση προσωρινής αποθήκευσης

Μπορείτε να απενεργοποιήσετε τη λειτουργία buffering στο διακομιστή Web, σε επίπεδο εφαρμογής ή σε επίπεδο σελίδας. Όταν απενεργοποιείτε τη λειτουργία buffering, ο διακομιστής Web χρησιμοποιεί HTTP κατατμημένη μεταφοράς κωδικοποίησης για να σταλεί η απάντηση στο πρόγραμμα-πελάτη Web.

Για να απενεργοποιήσετε την προσωρινή αποθήκευση σε επίπεδο εφαρμογών, μπορείτε να χρησιμοποιήσετε τοAspBufferingOnΗ ιδιότητα μετα-βάσης των υπηρεσιών IIS. Για περισσότερες πληροφορίες σχετικά με τοAspBufferingOnIIS metabase property, visit the following Microsoft Web site:
http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/fbe1bd5f-52d4-4a26-8ab1-7bb897bb3d53.mspx (http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/fbe1bd5f-52d4-4a26-8ab1-7bb897bb3d53.mspx)
To disable buffering at the page level, you can use theResponse.BufferΙδιότητα. Για περισσότερες πληροφορίες σχετικά με τοResponse.Bufferproperty, visit the following MSDN Web site:
http://msdn2.microsoft.com/en-us/library/ms526001.aspx (http://msdn2.microsoft.com/en-us/library/ms526001.aspx)

Method 4: Increase the buffer limit

You can increase the buffering limit if one of the following conditions is true:
  • The client is not a Web browser.
  • You cannot redesign the application to take advantage of a paging technology, such as theGridViewCLASS.
If you must increase the buffer limit, select a buffer limit that allows for the largest known response size. If you do not know the largest response size in advance, you can increase the buffer limit to a large value during testing. After you finish testing, use the largest value that is in thesc-bytesfield in the IIS log file for the response that is generated for the page.

To increase the buffering limit, follow these steps:
  1. Κάντε κλικStartΚάντε κλικΕκτέλεσηTYPECmd, και στη συνέχεια κάντε κλικ στο κουμπίOk.
  2. Πληκτρολογήστε την ακόλουθη εντολή και, στη συνέχεια, πιέστε το πλήκτρο ENTER:
    cd /d %systemdrive%\inetpub\adminscripts
  3. Πληκτρολογήστε την ακόλουθη εντολή και, στη συνέχεια, πιέστε το πλήκτρο ENTER:
    cscript.exe adsutil.vbs SET w3svc/aspbufferinglimitLimitSize
    ΣΗΜΕΙΩΣΗLimitSizerepresents the buffering limit size in bytes. For example, the number 67108864 sets the buffering limit size to 64 MB.
To confirm that the buffer limit is set correctly, follow these steps:
  1. Κάντε κλικStartΚάντε κλικΕκτέλεσηTYPECmd, και στη συνέχεια κάντε κλικ στο κουμπίOk.
  2. Πληκτρολογήστε την ακόλουθη εντολή και, στη συνέχεια, πιέστε το πλήκτρο ENTER:
    cd /d %systemdrive%\inetpub\adminscripts
  3. Πληκτρολογήστε την ακόλουθη εντολή και, στη συνέχεια, πιέστε το πλήκτρο ENTER:
    cscript.exe adsutil.vbs GET w3svc/aspbufferinglimit

Κατάσταση

Αυτή η συμπεριφορά οφείλεται στη σχεδίαση.

Περισσότερες πληροφορίες

Για περισσότερες πληροφορίες σχετικά με τοAspBufferingLimitIIS metabase property, visit the following Microsoft Web site:
http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/ea7e9c3f-d0c8-4e5c-8965-0d0429a3b8f1.mspx (http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/ea7e9c3f-d0c8-4e5c-8965-0d0429a3b8f1.mspx)

Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • Οδηγός Microsoft Internet Information Services 6.0
Λέξεις-κλειδιά: 
kbasp kbtshoot kbprb kbmt KB925764 KbMtel
Μηχανικά μεταφρασμένοΜηχανικά μεταφρασμένο
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.
Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:925764  (http://support.microsoft.com/kb/925764/en-us/ )