Usando o rastreamento de solicitação com falha para rastrear regras de reconfiguração
por Ruslan Yakushev
O Rastreamento de Solicitação com Falha (FRT) do IIS 7.0 e superior é uma ferramenta poderosa para solucionar problemas de falhas de processamento de solicitações. O FRT pode ser usado com o módulo de regravação de URL para rastrear como as regras de regravação foram aplicadas à URL de solicitação. Este passo a passo irá guiá-lo sobre como usar o FRT para solucionar problemas e depurar regras de reconfiguração de URL. Para obter mais informações sobre o rastreamento de solicitação com falha, consulte este artigo.
Pré-requisitos
Este passo a passo requer os seguintes pré-requisitos:
- IIS 7.0 ou superior com serviços de função ASP.NET e "Rastreamento" habilitados
- Regravação de URL da versão Go Live instalada
Configurando uma página da Web de teste
Para demonstrar como o módulo de regravação de URL funciona, usaremos uma página de ASP.NET de teste simples. 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 em %SystemDrive%\inetpub\wwwroot\
pasta ou crie um, se ele não existir. Abra o arquivo web.config e adicione a seguinte seção dentro do elemento <system.webServer>
:
<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 "Falhar 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 "Regravar para article.aspx" reescreve urls desse formato
http://localhost/article/234/some-title
para 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, então você deve ver a seguinte resposta no navegador:
Configurar rastreamento de solicitação com falha
Agora habilite o rastreamento de solicitação com falha para um "Site padrão" (consulte este artigo para obter instruções passo a passo sobre como habilitar o FRT). Depois de habilitar o rastreamento de solicitação com falha, criaremos uma regra FRT para eventos de rastreamento específicos para o módulo de regravação de URL.
Para criar uma regra FRT no Gerenciador do IIS, execute estas etapas:
- Clique no ícone "Failed Request Tracing Rules" para acessar a lista de regras de FRT.
- Clique no botão "Adicionar ..." ação para abrir o assistente de criação de regra FRT.
- Na primeira página do assistente, escolha "Todo o conteúdo (*)"
- Clique em "Avançar" e especifique o(s) código(s) de status como "200-399"
- Clique em Avançar e desmarque todos os provedores de rastreamento, exceto "Servidor WWW" e, em seguida, desmarque todas as áreas do provedor, exceto "Reescrever"
- Clique em Concluir para salvar a regra FRT.
Se o rastreamento de solicitação com falha foi instalado após o módulo de regravação de URL, a área "Reescrever" em Provedores de rastreamento pode não estar disponível. Se você não vir a área "Reescrever" listada lá, vá para Adicionar ou remover programas e, em seguida, execute o instalador do módulo de regravação de URL no modo de reparo.
Analisando o arquivo de log de rastreamento de solicitação 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 login FRT %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 de eventos específicos de regravação de URL que podem ser encontrados no arquivo de log de rastreamento:
Esses eventos mostram como as regras de regravação foram avaliadas e como a URL solicitada foi modificada pelo módulo de regravação. Vamos percorrer alguns dos eventos para entender melhor a lógica de avaliação de regras:
URL_REWRITE_START - Este evento indica o início dos eventos de reconfiguração de URL. As propriedades do evento fornecem as seguintes informações:
- A cadeia de caracteres da URL de entrada é "/article/234/some-title".
- Não havia nenhuma cadeia de caracteres de consulta.
- Scope="Distributed" indica que as regras são locais (ou seja, as regras são definidas no Web.config para o site) em oposição a globais (ou seja, definidas no nível do servidor).
RULE_EVALUATION_START - Este evento indica o início da lógica de avaliação da 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 - Este 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, corresponde a qualquer personagem)
- A URL de entrada correspondeu ao padrão com êxito
CONDITIONS_EVALUATION_START - Como a URL de entrada correspondia 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 teve sucesso
RULE_EVALUATION_END - Este 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é que a cadeia de caracteres de URL foi passada para a segunda regra
PATTERN_MATCH - Este evento fornece informações sobre como a URL foi correspondida com o padrão de regra. As propriedades do evento nos dizem que:
- O padrão de regra foi: "^article/([0-9]+)/([0-9a-z]+)"
- A URL de entrada correspondeu ao padrão com êxito
REWRITE_ACTION - Este 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.