Compartilhar via


Usando o rastreamento de solicitação com falha para rastrear regras de reescrita

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:

  1. IIS 7.0 ou superior com ASP.NET e funções "Rastreamento" ativadas
  2. 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.

Captura de tela do acesso à página do artigo por meio do navegador da Web.

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}&amp;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-title para esse formato http://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:

Captura de tela da Página de Teste de Reescrita do U R L que exibe o U R L original e a versão reescrita.

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:

  1. Clique no ícone "Regras de Rastreamento de Solicitação com Falha" para acessar a lista de regras do FRT.
    Captura de tela do painel Home do Site Padrão com Regras de Rastreamento de Solicitações com Falha selecionadas.
  2. Clique na ação "Adicionar..." para abrir o assistente de criação de regra do FRT. Captura de tela da caixa de diálogo Adicionar Regra de Rastreamento de Solicitação Com Falha com
  3. Na primeira página do assistente, escolha "Todo o conteúdo (*)"
  4. Clique em "Avançar" e especifique os códigos de status como "200-399"
    Captura de tela da configuração dos códigos de status no intervalo de 200 a 399.
  5. 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"Captura de tela de configuração dos provedores para apenas WWW Server e das áreas para apenas Rewrite.
  6. 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:

Captura de tela do acesso a um log do F R T usando um navegador da Web. O log mostra a lista de regras de reescrita e sua lógica de reescrita.

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.