HTTP 500 ou limite de buffer de resposta excedeu o erro ao usar Response.BinaryWrite no IIS

Este artigo ajuda você a resolve o erro (HTTP 500 ou limite de buffer de resposta excedido) que ocorre quando você usa o Response.BinaryWrite método para enviar um arquivo.

Versão original do produto: Internet Information Services 7 e versões posteriores
Número de KB original: 944886

Sintomas

Quando você envia um arquivo para um computador cliente de um servidor Web no qual o IIS (Internet Information Services) 7 ou uma versão posterior é instalado, você pode receber uma mensagem de erro no computador cliente que se assemelha a uma das seguintes:

  • Mensagem de erro 1

    HTTP 500 – Erro interno do servidor

  • Mensagem de erro 2

    Erro do objeto de resposta 'ASP 0251 : 80004005'
    Limite de buffer de resposta excedido
    A execução da página ASP fez com que o Buffer de Resposta excedesse seu limite configurado.

  • Mensagem de erro 3

    Além disso, você pode receber uma mensagem no arquivo de log do IIS que se assemelha ao seguinte:

    ASP_0251_:_80004005|Response_Buffer_Limit_Exceeded

Esse problema ocorre quando você usa o Response.BinaryWrite método para enviar o arquivo para o computador cliente e a AspBufferingOn propriedade é definida como False.

Motivo

Esse problema ocorre porque o IIS impõe um valor de buffer de resposta ASP (Active Server Pages) padrão de 4 MB quando o buffer de resposta ASP é desabilitado.

Na maioria dos cenários, o limite de buffer de 4 MB é suficiente para respostas ASP enviadas para clientes Web. Se esse limite for insuficiente, use um dos métodos a seguir.

Resolução 1: diminuir o tamanho da resposta

Para resolve esse problema quando você usar o método e o Response.BinaryWrite buffer ASP estiver desativado, verifique se os dados retornados ao cliente não são maiores que 4 MB.

Se a resposta for maior que o valor padrão de 4 MB, esse tamanho frequentemente causará uma experiência de usuário ruim. O navegador da Web deve receber a resposta grande pela rede. Em seguida, o navegador da Web deve analisar e exibir uma resposta HTML grande.

Resolução 2: habilitar o buffer de resposta ASP e aumentar o limite de buffer

Você pode usar a propriedade metabase do AspBufferingOn IIS para habilitar ou desabilitar o buffer no nível do aplicativo.

Observação

Nas versões IIS 7 e posteriores, você pode habilitar ou desabilitar o buffer de resposta ASP no nível do aplicativo usando o bufferingOn valor na seção ASP do <System.webserver>ApplicationHost.config no arquivo ou no Web.config arquivo.

Para habilitar ou desabilitar o buffer no nível da página, você pode usar a Response.Buffer propriedade.

Se você precisar aumentar o limite de buffer, selecione um limite de buffer que permita o maior tamanho de resposta conhecido. Se você não souber o maior tamanho de resposta com antecedência, poderá aumentar o limite de buffer para um valor grande durante o teste. Depois de concluir o teste, use o maior valor que aparece no campo sc-bytes no arquivo de log do IIS para a resposta gerada para a página.

Para aumentar o limite de buffer no IIS 7 e versões posteriores, siga estas etapas:

  1. Selecione Iniciar, selecione Executar, digite cmd e selecione OK.

  2. Digite o cd /d %systemdrive%\inetpub\adminscripts comando e pressione Enter.

  3. Digite o cscript.exe adsutil.vbs SET w3svc/aspbufferinglimit LimitSize comando e pressione Enter.

    Observação

    LimitSize representa o tamanho do limite de buffer em bytes. Por exemplo, o número 67108864 define o tamanho do limite de buffer como 64 MB.

Para confirmar se o limite de buffer está definido corretamente, siga estas etapas:

  1. Selecione Iniciar, selecione Executar, digite cmd e selecione OK.
  2. Digite o cd /d %systemdrive%\inetpub\adminscripts comando e pressione Enter.
  3. Digite o cscript.exe adsutil.vbs GET w3svc/aspbufferinglimit comando e pressione Enter.

Mais informações

Quando você usa o método e o Response.BinaryWrite buffer de resposta ASP é desabilitado, você só pode enviar 4 MB de dados para o cliente, a menos que a propriedade de limite de buffer da página seja definida explicitamente. Por padrão, o valor da bufferLimit propriedade no IIS 7 ou uma versão posterior é 4.194.304 bytes.

Além disso, a BinaryWrite() API falhará se a resposta ao cliente for maior que o valor do limite de buffer, embora o buffer de resposta ASP esteja desativado.

Observação

Recomendamos habilitar o buffer de resposta ASP. O buffer de resposta ASP aumenta o desempenho de um aplicativo Web.