Errore di superamento del limite del buffer di risposta o HTTP 500 quando si usa Response.BinaryWrite in IIS
Questo articolo consente di risolvere l'errore (http 500 o limite di buffer di risposta superato) che si verifica quando si usa il Response.BinaryWrite
metodo per inviare un file.
Versione originale del prodotto: Internet Information Services 7 e versioni successive
Numero KB originale: 944886
Sintomi
Quando si invia un file a un computer client da un server Web in cui è installato Internet Information Services (IIS) 7 o una versione successiva, è possibile che nel computer client venga visualizzato un messaggio di errore simile al seguente:
Messaggio di errore 1
HTTP 500 - Errore interno del server
Messaggio di errore 2
Errore dell'oggetto risposta 'ASP 0251 : 80004005'
Limite buffer di risposta superato
L'esecuzione della pagina ASP ha causato il superamento del limite configurato del buffer di risposta.Messaggio di errore 3
Inoltre, è possibile ricevere un messaggio nel file di log IIS simile al seguente:
ASP_0251_:_80004005|Response_Buffer_Limit_Exceeded
Questo problema si verifica quando si utilizza il Response.BinaryWrite
metodo per inviare il file al computer client e la AspBufferingOn
proprietà è impostata su False.
Causa
Questo problema si verifica perché IIS applica un valore predefinito del buffer di risposta ASP (Active Server Pages) di 4 MB quando il buffer delle risposte ASP è disabilitato.
Nella maggior parte degli scenari, il limite di buffer di 4 MB è sufficiente per le risposte ASP inviate ai client Web. Se questo limite non è sufficiente, usare uno dei metodi seguenti.
Risoluzione 1: ridurre le dimensioni della risposta
Per risolvere questo problema quando si usa il metodo e il Response.BinaryWrite
buffering ASP è disattivato, verificare che i dati restituiti al client non siano maggiori di 4 MB.
Se la risposta è maggiore del valore predefinito di 4 MB, queste dimensioni causano spesso un'esperienza utente scadente. Il Web browser deve ricevere la risposta di grandi dimensioni in rete. Il Web browser deve quindi analizzare e visualizzare una risposta HTML di grandi dimensioni.
Risoluzione 2: abilitare il buffering delle risposte ASP e aumentare il limite del buffer
È possibile utilizzare la AspBufferingOn
proprietà metabase IIS per abilitare o disabilitare il buffering a livello di applicazione.
Nota
In IIS 7 e versioni successive è possibile abilitare o disabilitare il buffering delle risposte ASP a livello di applicazione usando il bufferingOn
valore nella sezione ASP di <System.webserver>
nel ApplicationHost.config
file o nel Web.config
file.
Per abilitare o disabilitare il buffering a livello di pagina, è possibile utilizzare la Response.Buffer
proprietà .
Se è necessario aumentare il limite del buffer, selezionare un limite di buffer che consenta le dimensioni massime della risposta nota. Se non si conoscono in anticipo le dimensioni massime della risposta, è possibile aumentare il limite del buffer a un valore elevato durante il test. Al termine del test, usare il valore più grande visualizzato nel campo sc-bytes nel file di log IIS per la risposta generata per la pagina.
Per aumentare il limite di buffering in IIS 7 e versioni successive, seguire questa procedura:
Selezionare Start, selezionare Esegui, digitare cmd e quindi selezionare OK.
Digitare il
cd /d %systemdrive%\inetpub\adminscripts
comando e quindi premere INVIO.Digitare il
cscript.exe adsutil.vbs SET w3svc/aspbufferinglimit LimitSize
comando e quindi premere INVIO.Nota
LimitSize
rappresenta la dimensione del limite di buffering in byte. Ad esempio, il numero 67108864 imposta la dimensione del limite di buffering su 64 MB.
Per verificare che il limite del buffer sia impostato correttamente, seguire questa procedura:
- Selezionare Start, selezionare Esegui, digitare cmd e quindi selezionare OK.
- Digitare il
cd /d %systemdrive%\inetpub\adminscripts
comando e quindi premere INVIO. - Digitare il
cscript.exe adsutil.vbs GET w3svc/aspbufferinglimit
comando e quindi premere INVIO.
Ulteriori informazioni
Quando si usa il metodo e il Response.BinaryWrite
buffer delle risposte ASP è disabilitato, è possibile inviare solo 4 MB di dati al client, a meno che la proprietà limite di buffering per la pagina non sia impostata in modo esplicito. Per impostazione predefinita, il valore della bufferLimit
proprietà in IIS 7 o versione successiva è 4.194.304 byte.
Inoltre, l'API BinaryWrite()
ha esito negativo se la risposta al client è maggiore del valore limite del buffer anche se il buffer della risposta ASP è disattivato.
Nota
È consigliabile abilitare il buffering delle risposte ASP. Il buffering delle risposte ASP aumenta le prestazioni di un'applicazione Web.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per