Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
por Ruslan Yakushev
O Rastreamento de Solicitações com Falha (FRT) no IIS 7.0 e versões posteriores é uma ferramenta poderosa para diagnosticar falhas no processamento de solicitações. O FRT pode ser usado com o módulo de regravação de URL para rastrear como as regras de reescrita foram aplicadas à URL de solicitação. Este passo a passo orientará você sobre como usar o FRT para solucionar problemas e depurar regras de regravação de URL. Para obter mais informações sobre o rastreamento de solicitação com falha, consulte neste artigo.
Pré-requisitos
Este passo a passo requer os seguintes pré-requisitos:
- IIS 7.0 ou superior com ASP.NET e funções "Rastreamento" ativadas
- Reescrita de URL da versão Go Live instalada
Configurando uma página da Web de teste
Para demonstrar como o módulo de reescrita de URL funciona, usaremos uma página de teste simples em ASP.NET. Esta página lê as variáveis do servidor Web e gera seus valores no navegador.
Copie o seguinte código ASP.NET e coloque-o na pasta %SystemDrive%\inetpub\wwwroot\ em um arquivo chamado article.aspx:
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>URL Rewrite Module Test</title>
</head>
<body>
<h1>URL Rewrite Module Test Page</h1>
<table>
<tr>
<th>Server Variable</th>
<th>Value</th>
</tr>
<tr>
<td>Original URL: </td>
<td><%= Request.ServerVariables["HTTP_X_ORIGINAL_URL"] %></td>
</tr>
<tr>
<td>Final URL: </td>
<td><%= Request.ServerVariables["SCRIPT_NAME"] + "?" + Request.ServerVariables["QUERY_STRING"] %></td>
</tr>
</table>
</body>
</html>
Depois de copiar esse arquivo, navegue até http://localhost/article.aspx e verifique se a página foi renderizada corretamente em um navegador.
Configurando regras de regravação
Localize um arquivo web.config na %SystemDrive%\inetpub\wwwroot\ pasta ou crie um se ele não existir. Abra web.config arquivo e adicione a seguinte seção dentro do <system.webServer> elemento:
<rewrite>
<rules>
<rule name="Fail bad requests">
<match url="." />
<conditions>
<add input="{HTTP_HOST}" negate="true" pattern="localhost" />
</conditions>
<action type="AbortRequest" />
</rule>
<rule name="Rewrite to article.aspx">
<match url="^article/([0-9]+)/([_0-9a-z-]+)" />
<action type="Rewrite" url="article.aspx?id={R:1}&title={R:2}" />
</rule>
</rules>
</rewrite>
- A regra "Falha nas solicitações incorretas" anula a conexão HTTP se o cabeçalho do host da solicitação HTTP não corresponder a "localhost"
- A regra "Reescrever para article.aspx" reescreve urls desse formato
http://localhost/article/234/some-titlepara esse formatohttp://localhost/article.aspx?id=234&title=some-title.
Verifique se as regras estão configuradas corretamente abrindo um navegador e fazendo uma solicitação para http://localhost/article/234/some-title. Se as regras foram configuradas corretamente, você deverá ver a seguinte resposta no navegador:
Configurar rastreamento de falhas em solicitações
Agora, habilite o rastreamento de solicitação com falha para um "Site Padrão" (consulte deste artigo para obter instruções passo a passo sobre como habilitar o FRT). Depois de habilitar o rastreamento de solicitações com falha, criaremos uma regra FRT para rastrear eventos específicos ao módulo de reescrita de URL.
Para criar uma regra FRT no Gerenciador do IIS, siga estas etapas:
- Clique no ícone "Regras de Rastreamento de Solicitação com Falha" para acessar a lista de regras do FRT.
- Clique na ação "Adicionar..." para abrir o assistente de criação de regra do FRT.

- Na primeira página do assistente, escolha "Todo o conteúdo (*)"
- Clique em "Avançar" e especifique os códigos de status como "200-399"
- Clique em Avançar e, em seguida, desmarque todos os provedores de rastreamento, exceto "WWW Server" e depois desmarque todas as áreas do provedor, exceto "Rewrite"

- Clique em Concluir para salvar a regra FRT.
Se o Rastreamento de Solicitação com Falha tiver sido instalado após o módulo de reescrita de URL, a área "Reescrever" em Provedores de Rastreamento poderá não estar disponível. Se você não vir a área "Reescrever" listada lá, vá para Adicionar/Remover programas e execute o instalador do módulo de reescrita de URL no modo de reparo.
Analisando o arquivo de log de rastreamento de solicitações com falha
Depois que a regra FRT tiver sido criada, faça uma solicitação para http://localhost/article/234/some-title. Isso criará um log de FRT em %SystemDrive%\inetpub\Logs\FailedReqLogFiles\. Você pode abrir esse log usando o Internet Explorer e ele será renderizado como um documento HTML que pode ser facilmente navegado. Veja a seguir um exemplo dos eventos específicos de reescrita de URL que podem ser encontrados no arquivo de log de rastreamento:
Esses eventos mostram como as regras de reescrita foram avaliadas e como a URL solicitada foi modificada pelo módulo de reescrita. Vamos examinar alguns dos eventos para entender melhor a lógica de avaliação das regras.
URL_REWRITE_START - Esse evento indica o início dos eventos de reescrita de URL. As propriedades do evento fornecem as seguintes informações
- A cadeia de caracteres de URL de entrada é "/article/234/some-title".
- Não havia string de consulta.
- Scope="Distributed" indica que as regras são locais (ou seja, as regras são definidas no Web.config do site) em vez de globais (ou seja, definidas no nível do servidor).
RULE_EVALUATION_START - Esse evento indica o início da lógica de avaliação de regra. As propriedades do evento fornecem as seguintes informações:
- A regra usa expressões regulares para sintaxe de padrão (patternSyntax="ECMAScript")
- As regras subsequentes serão avaliadas (StopProcessing = "false")
- A regra é definida no nível raiz do site (RelativePath = "/")
PATTERN_MATCH - Esse evento fornece informações sobre como a URL foi correspondida com o padrão de regra. As propriedades do evento fornecem as seguintes informações
- O padrão de regra era "." (ou seja, que corresponde a qualquer caractere)
- A URL de entrada correspondeu ao padrão com êxito
CONDITIONS_EVALUATION_START - Como a URL de entrada correspondeu ao padrão, a avaliação das condições foi iniciada
CONDITION_EVALUATION - Este evento fornece as seguintes informações:
- O valor de HTTP_HOST era "localhost" e correspondia ao padrão
- Como a negação da condição foi especificada na regra (ou seja, Negated="true") a avaliação da condição não foi bem-sucedida.
CONDITIONS_EVALUATION_END - Este evento mostra que a avaliação das condições para esta regra não foi bem-sucedida
RULE_EVALUATION_END - Esse evento mostra que a regra não modificou a URL (Succeeded="false"). Isso ocorre porque a avaliação da condição da regra falhou.
RULE_EVALUATION_START - Isso mostra até mesmo que a cadeia de caracteres de URL foi passada para a segunda regra
PATTERN_MATCH - Esse evento fornece informações sobre como a URL foi correspondida com o padrão de regra. As propriedades do evento nos informam que:
- O padrão de regra era: "^article/([0-9]+)/([0-9a-z]+)"
- A URL de entrada correspondeu ao padrão com êxito
REWRITE_ACTION - Esse evento indica que a avaliação da regra foi bem-sucedida e a URL foi reescrita para "/article.aspx" com a cadeia de caracteres de consulta "id=234&title=some-title"
Resumo
Os eventos específicos de regravação de URL registrados pelo FRT fornecem informações muito detalhadas que podem ser usadas para solução de problemas e depuração de regras de regravação de URL, bem como apenas para entender como a lógica de avaliação de regras é aplicada a uma cadeia de caracteres de URL.