Compartilhar via


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:

  1. IIS 7.0 ou superior com serviços de função ASP.NET e "Rastreamento" habilitados
  2. 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.

Screenshot of accessing the article page through the web browser.

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}&amp;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 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, então você deve ver a seguinte resposta no navegador:

Screenshot of the U R L Rewrite Module Test Page that displays the original U R L and the rewritten version.

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:

  1. Clique no ícone "Failed Request Tracing Rules" para acessar a lista de regras de FRT.
    Screenshot of the Default Web Site Home pane with Failed Request Tracing Rules selected.
  2. Clique no botão "Adicionar ..." ação para abrir o assistente de criação de regra FRT. Screenshot of the Add Failed Request Tracing Rule dialog with All content (asterisk) selected.
  3. Na primeira página do assistente, escolha "Todo o conteúdo (*)"
  4. Clique em "Avançar" e especifique o(s) código(s) de status como "200-399"
    Screenshot of setting the status codes to the value of 200 dash 399.
  5. 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"Screenshot of setting Providers to only W W W Server and Areas to only Rewrite.
  6. 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:

Screenshot of accessing an F R T log using a web browser. The log shows the list of rewrite rules and their rewrite logic.

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.