Condividi tramite


Utilizzo della traccia delle richieste non riuscite per tracciare le regole di riscrittura

di Ruslan Kashšev

IIS 7.0 e versioni successive di FRT (Tracciamento richieste non riuscite) è uno strumento potente per la risoluzione dei problemi di elaborazione delle richieste. FRT può essere usato con il modulo di riscrittura URL per tracciare la modalità di applicazione delle regole di riscrittura all'URL della richiesta. Questa procedura dettagliata illustra come usare FRT per risolvere i problemi e il debug delle regole di riscrittura degli URL. Per altre informazioni sulla traccia delle richieste non riuscite, vedere questo articolo.

Prerequisiti

Questa procedura dettagliata richiede i prerequisiti seguenti:

  1. IIS 7.0 o versione successiva con i servizi di ruolo ASP.NET e 'Tracing' abilitati
  2. Rilascio live della riscrittura URL installato

Configurazione di una pagina Web di test

Per illustrare il funzionamento del modulo di riscrittura URL, verrà usata una semplice pagina di test ASP.NET. Questa pagina legge le variabili del server Web e ne restituisce i valori nel browser.

Copiare il codice ASP.NET seguente e inserirlo nella %SystemDrive%\inetpub\wwwroot\ cartella in un file denominato 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>

Dopo aver copiato questo file, passare a http://localhost/article.aspx e verificare che il rendering della pagina sia stato eseguito correttamente in un browser.

Screenshot dell'accesso alla pagina dell'articolo tramite il Web browser.

Configurazione delle regole di riscrittura

Individuare un file web.config nella %SystemDrive%\inetpub\wwwroot\ cartella o crearne uno se non esiste. Aprire web.config file e aggiungere la sezione seguente all'interno dell'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>
  • La regola "Fail bad requests" interrompe la connessione HTTP se l'intestazione host della richiesta HTTP non corrisponde a "localhost"
  • La regola "Riscrittura in article.aspx" riscrive gli URL da questo formato a questo formato http://localhost/article/234/some-titlehttp://localhost/article.aspx?id=234&title=some-title.

Verificare che le regole siano configurate correttamente aprendo un browser e inviando una richiesta a http://localhost/article/234/some-title. Se le regole sono state configurate correttamente, nel browser dovrebbe essere visualizzata la risposta seguente:

Screenshot della pagina di test di U R L Rewrite Module che mostra la versione originale di U R L e la versione riscritta.

Configurare il tracciamento delle richieste non riuscite

Abilitare ora la traccia delle richieste non riuscite per un "Sito Web predefinito" (vedere la in questo articolo per istruzioni dettagliate su come abilitare FRT). Dopo aver abilitato la traccia delle richieste non riuscite, verrà creata una regola FRT per tracciare gli eventi specifici del modulo di riscrittura URL.

Per creare una regola FRT in Gestione IIS, seguire questa procedura:

  1. Fare clic sull'icona delle "Regole di Tracciamento delle Richieste Fallite" per accedere all'elenco delle regole FRT.
    Screenshot del riquadro Home del sito Web predefinito con le regole di traccia delle richieste non riuscite selezionate.
  2. Fare clic sull'azione "Aggiungi ..." per aprire la procedura guidata per la creazione della regola FRT. Screenshot della finestra di dialogo: Aggiungi regola di traccia delle richieste non riuscite con tutto il contenuto (asterisco) selezionato.
  3. Nella prima pagina della procedura guidata scegliere "Tutto il contenuto (*)"
  4. Fare clic su "Avanti" e specificare i codici di stato come "200-399"
    Screenshot dell'impostazione dei codici di stato al valore compreso tra 200 e 399.
  5. Fare clic su Avanti e quindi deselezionare tutti i provider di traccia ad eccezione di "WWW Server" e quindi deselezionare tutte le aree del provider, ad eccezione di "Riscrivi"Screenshot dell'impostazione provider solo su W W W Server e aree solo su Riscrivi.
  6. Fare clic su Fine per salvare la regola FRT.

Se il modulo di Traccia delle Richieste Non Riuscite è stato installato dopo il modulo di Riscrittura dell'URL, l'area "Riscrittura" nei Provider di Traccia potrebbe non essere disponibile. Se l'area "Riscrittura" non è presente nell'elenco, passare a Aggiungi/Rimuovi programmi e quindi avviare il programma di installazione del modulo di riscrittura URL in modalità di ripristino.

Analisi del file di log di traccia delle richieste non riuscite

Dopo aver creato la regola FRT, effettuare una richiesta a http://localhost/article/234/some-title. Verrà creato un log FRT in %SystemDrive%\inetpub\Logs\FailedReqLogFiles\. È possibile aprire questo log usando Internet Explorer e verrà eseguito il rendering come documento HTML che può essere facilmente esplorato. Di seguito è riportato un esempio di eventi specifici di riscrittura url disponibili nel file di log di traccia:

Screenshot dell'accesso a un log F R T tramite un Web browser. Il log mostra l'elenco delle regole di riscrittura e la relativa logica di riscrittura.

Questi eventi mostrano come sono state valutate le regole di riscrittura e come l'URL richiesto è stato modificato dal modulo di riscrittura. Verranno ora illustrati alcuni degli eventi per comprendere meglio la logica di valutazione delle regole:

URL_REWRITE_START : questo evento indica l'inizio degli eventi di riscrittura URL. Le proprietà dell'evento forniscono le informazioni seguenti:

  • La stringa dell'URL di input è "/article/234/some-title".
  • Nessuna stringa di query.
  • Scope="Distributed" indica che le regole sono locali (ovvero le regole sono definite nel Web.config per il sito) anziché globali (ovvero definite a livello di server).

RULE_EVALUATION_START : questo evento indica l'inizio della logica di valutazione della regola. Le proprietà dell'evento forniscono le informazioni seguenti:

  • La regola usa espressioni regolari per la sintassi dei criteri (patternSyntax="ECMAScript")
  • Le regole successive verranno valutate (StopProcessing = "false")
  • La regola viene definita a livello radice del sito (RelativePath = "/")

PATTERN_MATCH : questo evento fornisce informazioni sulla corrispondenza dell'URL con il modello di regola. Le proprietà dell'evento forniscono le informazioni seguenti:

  • Il modello di regola era "." (ovvero, corrisponde a qualsiasi carattere)
  • L'URL di input corrispondeva correttamente al modello

CONDITIONS_EVALUATION_START - Poiché l'URL di input corrispondeva al modello, è stata avviata la valutazione delle condizioni.

CONDITION_EVALUATION : questo evento fornisce le informazioni seguenti:

  • Il valore di HTTP_HOST è "localhost" e corrisponde al modello
  • Poiché la negazione della condizione è stata specificata nella regola (ad esempio Negated="true") la valutazione della condizione non ha avuto esito positivo.

CONDITIONS_EVALUATION_END : questo evento mostra che la valutazione delle condizioni per questa regola non è riuscita

RULE_EVALUATION_END : questo evento indica che la regola non ha modificato l'URL (Succeeded="false"). Ciò è dovuto al fatto che la valutazione della condizione della regola non è riuscita.

RULE_EVALUATION_START : indica anche che la stringa URL è stata passata alla seconda regola

PATTERN_MATCH : questo evento fornisce informazioni sulla corrispondenza dell'URL con il modello di regola. Le proprietà dell'evento indicano che:

  • Il modello di regola era: "^article/([0-9]+)/([0-9a-z]+)"
  • L'URL di input corrispondeva correttamente al modello

REWRITE_ACTION : questo evento indica che la valutazione della regola è riuscita e che l'URL è stato riscritto in "/article.aspx" con la stringa di query "id=234&title=some-title"

Sommario

Gli eventi specifici di riscrittura URL registrati da FRT forniscono informazioni molto dettagliate che possono essere usate per la risoluzione dei problemi e il debug delle regole di riscrittura URL, nonché per comprendere come viene applicata la logica di valutazione delle regole a una stringa URL.