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:

  1. Selezionare Start, selezionare Esegui, digitare cmd e quindi selezionare OK.

  2. Digitare il cd /d %systemdrive%\inetpub\adminscripts comando e quindi premere INVIO.

  3. 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:

  1. Selezionare Start, selezionare Esegui, digitare cmd e quindi selezionare OK.
  2. Digitare il cd /d %systemdrive%\inetpub\adminscripts comando e quindi premere INVIO.
  3. 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.