DetailPage-MSS-KB

Base de Dados de Conhecimento

Artigo: 820729 - Última revisão: sexta-feira, 30 de Novembro de 2012 - Revisão: 7.0

Nesta página

Sumário

Este artigo descreve as capacidades de registo de erros de APIs HTTP (Hypertext Transfer Protocol).

Alguns erros que ocorrem numa aplicação baseada em HTTP são automaticamente processados pela API HTTP, em vez de voltarem a ser transferidos para uma aplicação para processamento. Este comportamento ocorre porque a frequência desses erros poderá inundar o registo de eventos ou o processador de uma aplicação.

Os tópicos seguintes descrevem os diferentes aspetos do registo de erros de API HTTP:
  • Configurar o registo de erros de API HTTP
    As definições de registo controlam os erros de registo de API HTTP, o tamanho máximo permitido dos ficheiros de registo e a localização dos ficheiros de registo.
  • Formato dos registos de erros de API HTTP
    A API HTTP cria ficheiros de registo em conformidade com as convenções de ficheiros de registo do W3C (World Wide Web Consortium). Poderá utilizar ferramentas padrão para analisar estes ficheiros de registo. No entanto, ao contrário dos ficheiros de registo do W3C, os ficheiros de registo de API HTTP não contêm os nomes das colunas.
  • Tipos de erros registados pela API HTTP
    A API HTTP regista vários erros comuns.

Mais Informação

Configurar o registo de erros na API HTTP

Para nos solicitar a configuração do registo de erros na API HTTP, consulte a secção "Corrigir por mim". Se preferir configurar o registo de erros de API HTTP sozinho, aceda a "Deixar-me corrigir o problema".

Corrigir por mim



Para corrigir este problema automaticamente, clique no botão ou hiperligação Corrigir. Na caixa de diálogo Transferência de Ficheiros, clique em Executar e, em seguida, siga os passos indicados no assistente de correção.

Disable HTTP API error logging
Microsoft Fix it 50635
Enable HTTP API error logging
Microsoft Fix it 50634


Notas
  • Este assistente pode estar apenas em inglês. Contudo, a correção automática também funciona para versões do Windows noutros idiomas.
  • Se não estiver a trabalhar no computador que tem o problema, pode guardar as soluções de correção numa unidade flash ou num CD e, depois, executá-las no computador que tem o problema.



Deixar-me corrigir o problema

Três valores de registo numa chave HTTP \Parameters controlam o registo de erros de API HTTP. Estas chaves encontram-se na seguinte chave de registo:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters
Nota: a localização e o formato dos valores de configuração poderão variar em versões posteriores do sistema operativo Microsoft Windows.

É necessário possuir credenciais de Administrador/Sistema Local para alterar os valores de registo e visualizar ou modificar os ficheiros de registo e a pasta que os contém.

As informações de configuração nos valores de registo são lidas quando o controlador de API HTTP é iniciado. Sendo assim, se alterar as definições, é necessário parar e reiniciar o controlador para que os novos valores sejam lidos. Para o fazer, introduza os seguintes comandos da consola:
net stop http
net start http
A seguinte convenção de nomenclatura é utilizada para atribuir nomes aos ficheiros de registo:
httperr + sequência numérica + .log
Exemplo: httperr4.log
Os ficheiros de registo são repetidos quando atingem o tamanho máximo especificado pelo valor de registo ErrorLogFileTruncateSize. Este valor não pode ser inferior a um megabyte (MB).

Se a configuração do registo de erros não for válida ou se ocorrer algum tipo de falha na gravação nos ficheiros de registo pela API HTTP, a API HTTP utiliza o registo de eventos para notificar os administradores de que o registo de erros não está a ocorrer.

A tabela seguinte descreve os valores de configuração de registo.
Reduzir esta tabelaExpandir esta tabela
Valor de registoDescrição
EnableErrorLoggingUm valor DWORD que poderá definir como TRUE para ativar o registo de erros ou como FALSE para o desativar. O valor predefinido é TRUE.
ErrorLogFileTruncateSizeUm valor DWORD que especifica o tamanho máximo de um ficheiro de registo de erros, em bytes. O valor predefinido é um MB (0x100000).

Nota: o valor especificado não pode ser inferior ao valor predefinido.
ErrorLoggingDirUm valor String que especifica a pasta onde a API HTTP coloca os respetivos ficheiros de registo.

A API HTTP cria a subpasta HTTPERR na pasta especificada e armazena os ficheiros de registo na subpasta. São atribuídas as mesmas definições de permissão a esta subpasta e aos ficheiros de registo. O Administrador e as Contas do Sistema Local possuem acesso total. Outros utilizadores não possuem acesso.

Segue-se a pasta predefinida quando a pasta não é especificada no registo:
%SystemRoot%\System32\LogFiles

Nota O valor da cadeia ErrorLoggingDir tem de ser um caminho local totalmente qualificado. No entanto, poderá conter %SystemRoot%. Não pode ser utilizada uma unidade de rede nem uma partilha de rede.

Formato dos registos de erros na API HTTP

Geralmente, os ficheiros de registo de erros na API HTTP possuem o mesmo formato que os registos de erros W3C, à excepção de que os ficheiros de registo de erros na API HTTP não contêm cabeçalhos de coluna. Cada linha de um registo de erros de API HTTP regista um erro. Os campos são apresentados segundo uma ordem específica. Um caráter de espaço único (0x0020) separa cada campo do anterior. Em cada campo, sinais de adição (0x002B) substituem carateres de espaço, separadores e carateres de controlo não imprimíveis.

A tabela seguinte identifica os campos e a ordem dos campos num registo de erros.
Reduzir esta tabelaExpandir esta tabela
CampoDescrição
DataO campo Data segue o formato W3C. Este campo é baseado na Hora Universal Coordenada (UTC). O campo Data possui sempre dez carateres no formato AAAA-MM-DD. Por exemplo, 1 de maio de 2003 é apresentado como 2003-05-01.
HoraO campo Hora segue o formato W3C. Este campo é baseado na UTC. O campo Hora possui sempre oito carateres no formato HH:MM:SS. Por exemplo, 17:30 (UTC) é apresentado como 17:30:00.
Endereço IP do ClienteO endereço IP do cliente afetado. O valor neste campo poderá ser um endereço IPv4 ou um endereço IPv6. Se o endereço IP do cliente for um endereço IPv6, o campo ScopeId está também incluído no endereço.
Porta do ClienteO número da porta do cliente afetado.
Endereço IP do ServidorO endereço IP do servidor afetado. O valor neste campo poderá ser um endereço IPv4 ou um endereço IPv6. Se o endereço IP do servidor for um endereço IPv6, o campo ScopeId está também incluído no endereço.
Porta do servidorO número da porta do servidor afetado.
Versão do ProtocoloA versão do protocolo utilizado.

Se a ligação não tiver sido suficientemente analisada para determinar a versão do protocolo, é utilizado um hífen (0x002D) como marcador de posição para o campo vazio.

Se o número da versão principal ou o número da versão secundária analisados forem iguais ou superiores a 10, a versão é registada como HTTP/?.?.
VerboO estado de verbo que o último pedido analisado transfere. Os verbos desconhecidos são incluídos, mas qualquer verbo superior a 255 bytes é truncado até este valor. Se o verbo não estiver disponível, é utilizado um hífen (0x002D) como marcador de posição para o campo vazio.
CookedURL + ConsultaO URL e qualquer consulta associada ao mesmo são registados como um campo separado por um ponto de interrogação (0x3F). O campo é truncado para o valor limite de 4096 bytes.

Se este URL tiver sido analisado ("cozinhado"), é registado com uma conversão de página de código local e tratado como um campo Unicode.

Se este URL não tiver sido analisado ("cozinhado") na altura do registo, é copiado tal como está sem qualquer conversão Unicode.

Se a API HTTP não conseguir analisar este URL, é utilizado um hífen (0x002D) como marcador de posição para o campo vazio.
Estado de ProtocoloO estado de protocolo não pode ser superior a 999.

Se o estado de protocolo da resposta a um pedido estiver disponível, é registado neste campo.

Se o estado do protocolo não estiver disponível, é utilizado um hífen (0x002D) como marcador de posição para o campo vazio.
SiteIdNão utilizado nesta versão da API HTTP. É sempre apresentado um hífen de marcador de posição (0x002D) neste campo.
Frase de MotivoEste campo contém uma cadeia que identifica o tipo de erro que está a ser registado. Este campo nunca é deixado vazio.
Nome da FilaEste é o nome da fila do pedido.
As seguintes linhas de exemplo fazem parte de um registo de erros de API HTTP:
2002-07-05 18:45:09 172.31.77.6 2094 172.31.77.6 80 HTTP/1.1 GET /qos/1kbfile.txt 503 – ConnLimit 2002-07-05 19:51:59 127.0.0.1 2780 127.0.0.1 80 HTTP/1.1 GET /ThisIsMyUrl.htm 400 – Hostname 2002-07-05 19:53:00 127.0.0.1 2894 127.0.0.1 80 HTTP/2.0 GET / 505 - Version_N/S 2002-07-05 20:06:01 172.31.77.6 64388 127.0.0.1 80 - - - - - Timer_MinBytesPerSecond

Tipos de erros que a API HTTP regista

A API HTTP regista respostas de erros a clientes, tempos-limite de ligação, pedidos órfãos e ligações interrompidas que são processadas incorrectamente.

A lista seguinte identifica os tipos de erros registados pela API HTTP:
  • Respostas para clientes A API HTTP envia uma resposta de erro para um cliente, por exemplo, um erro 400 causado por um erro de análise no último pedido recebido. Após o envio da resposta de erro pela API HTTP, a ligação é terminada.
  • Tempos limite de ligações A API HTTP esgota o tempo limite de uma ligação. Se um pedido estiver pendente quando o tempo limite da ligação é excedido, o pedido é utilizado para fornecer mais informações sobre a ligação no registo de erros.
  • Pedidos órfãos Um processo no modo de utilizador é fechado de forma inesperada, continuando a existir ainda pedidos na fila encaminhados para esse processo. A API HTTP regista os pedidos órfãos no registo de erros.
Os tipos de erros específicos são designados por cadeias da Frase de Motivo sempre apresentadas no último campo de cada linha de erro. A tabela seguinte identifica as Frases de Motivo da API HTTP.
Reduzir esta tabelaExpandir esta tabela
Frase de MotivoDescrição

AppOfflineOcorreu um erro de serviço indisponível (um erro HTTP 503). O serviço não está disponível porque os erros da aplicação fizeram com que a aplicação fosse colocada offline.
AppPoolTimerOcorreu um erro de serviço indisponível (um erro HTTP 503). O serviço não está disponível porque o processo do conjunto aplicacional está demasiado ocupado para processar o pedido.
AppShutdownOcorreu um erro de serviço indisponível (um erro HTTP 503). O serviço não está disponível porque a aplicação foi encerrada automaticamente em resposta à política de administrador.
BadRequestOcorreu um erro de análise ao processar o pedido.
Client_ResetA ligação entre o cliente e o servidor foi terminada antes de o pedido ser atribuído a um processo de trabalho. A causa mais comum deste comportamento consiste no facto de o cliente terminar prematuramente a ligação ao servidor.
Connection_Abandoned_By_AppPoolUm processo de trabalho do conjunto aplicacional foi terminado de forma inesperada ou deixou órfão um pedido pendente ao fechar o respetivo identificador.
Connection_Abandoned_By_ReqQueueUm processo de trabalho do conjunto aplicacional foi terminado de forma inesperada ou deixou órfão um pedido pendente ao fechar o respetivo identificador. Específico do Windows Vista e Windows Server 2008.
Connection_DroppedA ligação entre o cliente e o servidor foi terminada antes de o servidor enviar o respetivo pacote de resposta final. A causa mais comum deste comportamento consiste no facto de o cliente terminar prematuramente a ligação ao servidor.
Connection_Dropped_List_FullA lista de ligações ignoradas entre os clientes e o servidor está cheia. Específico do Windows Vista e Windows Server 2008.
ConnLimitOcorreu um erro de serviço indisponível (um erro HTTP 503). O serviço não está disponível porque o limite de ligações ao nível do site foi atingido ou excedido.
Connections_RefusedA memória kernel NonPagedPool foi ignorada abaixo dos 20 MB e http.sys deixou de receber novas ligações
DesativadoOcorreu um erro de serviço indisponível (um erro HTTP 503). O serviço não está disponível porque um administrador colocou a aplicação offline.
EntityTooLargeUma entidade excedeu o tamanho máximo permitido.
FieldLengthO limite do tamanho do campo foi excedido.
ProibidoUma sequência ou elemento proibidos foram detetados durante a análise.
CabeçalhoOcorreu um erro de análise num cabeçalho.
Nome do anfitriãoOcorreu um erro de análise ao processar o pedido.
InternoOcorreu um erro de servidor interno (um erro HTTP 500).
Invalid_CR/LFOcorreu um símbolo de retorno ou mudança de linha ilegais.
LengthRequiredEstá em falta um valor de comprimento necessário.
N/DOcorreu um erro de serviço indisponível (um erro HTTP 503). O serviço não está disponível porque ocorreu um erro interno (como uma falha de atribuição de memória).
N/IOcorreu um erro de não implementação (um erro HTTP 501) ou um erro de serviço indisponível (um erro HTTP 503), devido a uma codificação de transferência desconhecida.
NúmeroOcorreu um erro de análise ao processar um número.
PreconditionEstá em falta uma pré-condição necessária.
QueueFullOcorreu um erro de serviço indisponível (um erro HTTP 503). O serviço não está disponível porque a fila de pedidos da aplicação está cheia.
RequestLengthO limite do tamanho do pedido foi excedido.
Timer_AppPoolA ligação expirou porque um pedido aguardou demasiado tempo numa fila do conjunto aplicacional pela remoção da fila e processamento por parte de uma aplicação do servidor. Esta duração de tempo limite é ConnectionTimeout. Por predefinição, este valor está definido para dois minutos.
Timer_ConnectionIdleA ligação expirou e permanece inativa. A duração predefinida de ConnectionTimeout é de dois minutos.
Timer_EntityBodyA ligação expirou antes da chegada do corpo de entidade do pedido. Quando é evidente que um pedido possui um corpo de entidade, a API HTTP ativa o temporizador Timer_EntityBody. Inicialmente, o limite deste temporizador é definido para o valor de ConnectionTimeout (normalmente, 2 minutos). Sempre que outra indicação de dados é recebida neste pedido, a API HTTP repõe o temporizador para fornecer à ligação mais dois minutos (ou outro valor especificado em ConnectionTimeout).
Timer_HeaderWaitA ligação expirou porque a análise do cabeçalho para um pedido demorou mais tempo do que o limite predefinido de dois minutos.
Timer_MinBytesPerSecondA ligação expirou porque o cliente não recebeu uma resposta a uma velocidade razoável. A velocidade de envio da resposta foi mais lenta do que os 240 bytes/seg. predefinidos. Isto pode ser controlado com a propriedade da metabase MinFileBytesPerSec.
Timer_ReqQueueA ligação expirou porque um pedido aguardou demasiado tempo numa fila do conjunto aplicacional pela remoção da fila por parte de uma aplicação do servidor. Esta duração de tempo limite é ConnectionTimeout. Por predefinição, este valor está definido para dois minutos. Específico do Windows Vista e Windows Server 2008.
Timer_ResponseReservado. Não utilizado atualmente.
Timer_SslRenegotiation A ligação expirou porque a renegociação SSL entre o cliente e o servidor demorou mais tempo que o tempo-limite predefinido de dois minutos.
URLOcorreu um erro de análise ao processar um URL.
URL_LengthUm URL excedeu o tamanho máximo permitido.
VerboOcorreu um erro de análise ao processar o verbo.
Version_N/SOcorreu um erro de versão não suportada (um erro HTTP 505).

Referências

Para obter mais informações sobre a adição de campos de registo adicionais para registo de erros HTTP do IIS, clique no seguinte número de artigo para visualizar o artigo na Base de Dados de Conhecimento Microsoft:
832975  (http://support.microsoft.com/kb/832975/pt/ ) Estão agora disponíveis propriedades adicionais para registo no ficheiro Httperr#.log no IIS 6.0 e IIS 7.0
Palavras-chave: 
kbhttphandlers kbhttp kbapi kberrmsg kbinfo kbfixme kbmsifixme KB820729
Partilhar
Opções de suporte adicionais
Fóruns de Suporte da Comunidade Microsoft
Contacte-nos directamente
Encontre um parceiro certificado Microsoft
Loja Microsoft