Artigo: 925764 - Última revisão: sexta-feira, 11 de Maio de 2007 - Revisão: 1.3

Mensagem de erro quando um Web browser envia um pedido para uma página ASP para um servidor Web que está a executar o IIS 6.0: "Limite de memória intermédia de resposta excedido"

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Reduzir tudo

Sintomas

Considere o seguinte cenário. Um browser cliente envia um pedido para uma página de servidor activas (ASP) para um servidor Web que está a executar serviços de informação Internet (IIS) 6.0. O pedido ASP gera uma resposta de grandes dimensões. Neste cenário, poderão ocorrer os seguintes sintomas:
  • A resposta falha.
  • Ocorre um erro de servidor HTTP 500 e receberá a seguinte mensagem de erro no browser cliente:
    Resposta object error 'ASP 0251: 80004005'
    Limite de memória intermédia de resposta excedido
    / PageName.asp, linha LineNumber
    Nota PageName.asp representa o nome da página ASP que foi pedido. LineNumber representa o último número de linha no ficheiro que foi processado antes da memória intermédia de resposta excedido o limite.
  • O ficheiro de registo do IIS contém o seguinte erro no campo cs-uri-consulta :
    |0|ASP_0251_:_80004005|Response_Buffer_Limit_Exceeded

Causa

Este problema ocorre devido a uma alteração no comportamento que foi introduzido no IIS 6.0 e ao IIS 5.0. Estas versões do IIS impõem um limite de memória intermédia de resposta ASP predefinido de 4 MB. Este limite impede que grandes respostas ASP de afectar negativamente o processo do IIS que hospeda a aplicação da Web. Se um pedido ASP gerar uma resposta que é maior que o limite de memória intermédia configurado, encontrar os sintomas mencionados na secção "Sintomas".

Resolução

Na maioria dos cenários, o limite de memória intermédia de 4 MB é suficiente para respostas ASP são enviadas para os clientes da Web. Se este limite não forem suficientes, utilize um dos seguintes métodos:

Método 1: Diminuir o tamanho de resposta

Se a resposta for maior que o valor predefinido de 4 MB, este tamanho faz com que frequentemente uma experiência de utilizador de má qualidade. O browser deve receber a resposta grande através da rede. Em seguida, o browser tem analisar e apresentar uma resposta HTML muito grande.

Se não tiver o cliente Web que recebe a resposta ver a resposta completa como uma única página, pode diminuir o tamanho da resposta. Por exemplo, pode rescrever aplicação baseada no ASP para que os dados são apresentados numa grelha. Por conseguinte, o cliente Web pode procurar a uma página de dados ao mesmo tempo. Pode utilizar a classe de GridView no Microsoft ASP.NET para conseguir este efeito. Para obter mais informações sobre a classe de GridView no ASP.NET, visite o seguinte Web site da Microsoft Developer Network (MSDN):
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)

Método 2: Utilizar o método Response.Flush

Se utilizar um ciclo no ficheiro de ASP para criar uma tabela grande ou criar dados, pode utilizar o método Response.Flush . Quando utiliza este método, pode ainda utilizar armazenamento em buffer. No entanto, tem também controlo total sobre a quantidade de dados enviados para o cliente Web e pode controlar o tamanho da memória intermédia de resposta. Para obter mais informações sobre o método Response.Flush , visite o seguinte site da Web MSDN:
http://msdn2.microsoft.com/en-us/library/ms525560.aspx (http://msdn2.microsoft.com/en-us/library/ms525560.aspx)

Método 3: Desactivar a colocação em memória intermédia

Pode desactivar a memória intermédia no servidor Web, ao nível da aplicação ou ao nível da página. Quando desactiva a colocação em memória intermédia, o servidor Web utiliza HTTP por segmentos-codificação de transferência para enviar a resposta para o cliente Web.

Para desactivar a memória intermédia ao nível da aplicação, pode utilizar a propriedade de metabase do IIS AspBufferingOn . Para obter mais informações sobre a propriedade de metabase do IIS AspBufferingOn , visite o seguinte Web site da Microsoft:
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)
Para desactivar a memória intermédia ao nível da página, pode utilizar a propriedade Response.Buffer . Para obter mais informações sobre a propriedade Response.Buffer , visite o seguinte site da Web MSDN:
http://msdn2.microsoft.com/en-us/library/ms526001.aspx (http://msdn2.microsoft.com/en-us/library/ms526001.aspx)

Método 4: Aumentar o limite de memória intermédia

Pode aumentar o limite de colocação na memória intermédia se uma das seguintes condições for verdadeira:
  • O cliente não é um Web browser.
  • Não é possível recriar a aplicação para tirar partido de uma tecnologia de paginação, tal como a classe de GridView .
Se tem de aumentar o limite de memória intermédia, seleccione um limite de memória intermédia que permite o maior tamanho de resposta conhecidos. Se não souber antecipadamente o maior tamanho de resposta, pode aumentar o limite de memória intermédia para um valor elevado durante os testes. Depois de concluir a testar, utilize o maior valor campo sc-bytes no ficheiro de registo do IIS para a resposta que é gerado para a página.

Para aumentar o limite de colocação na memória intermédia, siga estes passos:
  1. Clique em Iniciar , clique em Executar , escreva cmd e, em seguida, clique em OK .
  2. Escreva o seguinte comando e, em seguida, prima ENTER:
    CD /d %systemdrive%\inetpub\adminscripts
  3. Escreva o seguinte comando e, em seguida, prima ENTER:
    cscript.exe adsutil.vbs SET w3svc/aspbufferinglimit LimitSize
    Nota LimitSize representa o tamanho limite de colocação na memória intermédia em bytes. Por exemplo, o número 67108864 define o tamanho limite de colocação na memória intermédia para 64 MB.
Para confirmar que o limite de memória intermédia está definido correctamente, siga estes passos:
  1. Clique em Iniciar , clique em Executar , escreva cmd e, em seguida, clique em OK .
  2. Escreva o seguinte comando e, em seguida, prima ENTER:
    CD /d %systemdrive%\inetpub\adminscripts
  3. Escreva o seguinte comando e, em seguida, prima ENTER:
    cscript.exe adsutil.vbs GET w3svc/aspbufferinglimit

Ponto Da Situação

Este comportamento ocorre por predefinição.

Mais Informação

Para obter mais informações sobre a propriedade de metabase do IIS AspBufferingLimit , visite o seguinte Web site da Microsoft:
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)

A informação contida neste artigo aplica-se a:
  • Microsoft Internet Information Services 6.0
Palavras-chave: 
kbmt kbasp kbtshoot kbprb KB925764 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 925764  (http://support.microsoft.com/kb/925764/en-us/ )