Condividi tramite


Errore superato dal limite http 500 o buffer di risposta 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 in Active Server Pages (ASP) per inviare un file.

Versione originale del prodotto: Internet Information Services, Active Server Pages (ASP)
Numero KB originale: 944886

Sintomi

Prendi in considerazione lo scenario seguente:

  • Si invia un file a un computer client da un server Web in cui è installato Internet Information Services (IIS).
  • Utilizzare il Response.BinaryWrite metodo per inviare il file al computer client e la AspBufferingOn proprietà è impostata su False.

In questo scenario, è possibile ricevere uno dei messaggi di errore seguenti nel computer client:

  • 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 da Buffer di risposta.

È anche possibile che venga visualizzato un messaggio simile al seguente nel file di log IIS:

ASP_0251_:_80004005|Response_Buffer_Limit_Exceeded

Causa

Questo problema si verifica perché IIS applica un valore predefinito del buffer di risposta ASP 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 Response.BinaryWrite metodo e il 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, questa dimensione causa spesso un'esperienza utente scarsa. 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 buffer delle risposte ASP e aumentare il limite di buffer

È possibile utilizzare la AspBufferingOn proprietà metabase IIS per abilitare o disabilitare il buffering a livello di applicazione.

Note

In IIS è possibile abilitare o disabilitare il buffer 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 usare la Response.Buffer proprietà .

Se è necessario aumentare il limite di buffer, selezionare un limite di buffer che consenta la dimensione massima della risposta nota. Se non si conoscono le dimensioni massime della risposta in anticipo, è 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, 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.

    Note

    LimitSize rappresenta le dimensioni del limite di buffering in byte. Ad esempio, il numero 67108864 imposta le dimensioni 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 Response.BinaryWrite metodo e il buffer delle risposte ASP è disabilitato, è possibile inviare al client solo 4 MB di dati, 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 è di 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 delle risposte ASP è disattivato.

Note

È consigliabile abilitare il buffer delle risposte ASP. Il buffer delle risposte ASP aumenta le prestazioni di un'applicazione Web.