Freigeben über


Verwenden der Fehleranforderungsablaufverfolgung zum Neuschreiben von Regeln zur Ablaufverfolgung

von Ruslan Yakushev

IIS 7.0 und höher (Failed Request Tracing, FRT) ist ein leistungsfähiges Tool zur Problembehandlung bei Anforderungsverarbeitungsfehlern. FRT kann mit dem URL-Neuschreibmodul verwendet werden, um zu verfolgen, wie Rewrite-Regeln auf die Anforderungs-URL angewendet wurden. Diese Einführung erläutert, wie Sie FRT zur Problembehandlung und zum Debuggen von URL-Umschreibungsregeln verwenden können. Weitere Informationen zur Ablaufverfolgung fehlgeschlagener Anforderungen finden in diesem Artikel.

Voraussetzungen

Für diese Anleitung sind folgende Voraussetzungen erforderlich:

  1. IIS 7.0 oder höher mit aktivierten ASP.NET- und "Ablaufverfolgungs"-Rollendiensten
  2. Die URL-Umschreibung 'Go Live'-Veröffentlichung wurde installiert.

Einrichten einer Testwebseite

Um zu veranschaulichen, wie das URL-Umschreibungsmodul funktioniert, verwenden wir eine einfache Test-ASP.NET Seite. Diese Seite liest die Webservervariablen und gibt ihre Werte im Browser aus.

Kopieren Sie den folgenden ASP.NET Code, und fügen Sie ihn in den %SystemDrive%\inetpub\wwwroot\ Ordner in einer Datei namens article.aspx ein:

<%@ 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>

Wechseln Sie nach dem Kopieren dieser Datei zu http://localhost/article.aspx, und überprüfen Sie, ob die Seite in einem Browser korrekt dargestellt wurde.

Screenshot des Zugriffs auf die Artikelseite über den Webbrowser.

Konfigurieren von Neuschreibregeln

Suchen Sie eine web.config Datei im %SystemDrive%\inetpub\wwwroot\ Ordner, oder erstellen Sie eine Datei, wenn sie nicht vorhanden ist. Öffnen Sie web.config Datei, und fügen Sie den folgenden Abschnitt innerhalb des <system.webServer> Elements hinzu:

<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>
  • Die Regel "Fehlerhafte Anfragen" bricht die HTTP-Verbindung ab, wenn der Host-Header der HTTP-Anfrage nicht mit "localhost" übereinstimmt.
  • Die Regel "Umschreiben zu article.aspx" schreibt URLs von diesem Format http://localhost/article/234/some-title in dieses Format http://localhost/article.aspx?id=234&title=some-title um.

Überprüfen Sie, ob die Regeln ordnungsgemäß konfiguriert sind, indem Sie einen Browser öffnen und eine Anforderung stellen http://localhost/article/234/some-title. Wenn Regeln ordnungsgemäß eingerichtet wurden, sollte die folgende Antwort im Browser angezeigt werden:

Screenshot der Testseite des U R L Rewrite Module, auf der die ursprüngliche U R L und die neu geschriebene Version angezeigt werden.

Konfigurieren der Ablaufverfolgung für fehlgeschlagene Anforderungen

Aktivieren Sie nun die Fehleranforderungsablaufverfolgung für eine "Standardwebsite" (siehe in diesem Artikel für Schritt Anleitungen zum Aktivieren von FRT). Nachdem Sie die Nachverfolgung fehlgeschlagener Anforderungen aktiviert haben, erstellen wir eine FRT-Regel für Ereignisse, die speziell für das URL-Neuschreibmodul spezifisch sind.

Führen Sie die folgenden Schritte aus, um eine FRT-Regel im IIS-Manager zu erstellen:

  1. Klicken Sie auf das Symbol "Regeln zur Ablaufverfolgung fehlgeschlagener Anfragen", um zur Liste der FRT-Regeln zu gelangen.
    Screenshot der Standardwebsite-Startseite mit ausgewählten Regeln zur Ablaufverfolgung fehlgeschlagener Anfragen.
  2. Klicken Sie auf die Aktion "Hinzufügen...", um den FRT-Regelerstellungsassistenten aufzurufen. Screenshot des Dialogfeldes
  3. Wählen Sie auf der ersten Seite des Assistenten "Alle Inhalte (*)" aus.
  4. Klicken Sie auf "Weiter", und geben Sie den Statuscode(n) als "200-399" an.
    Screenshot der Einstellung der Statuscodes auf den Wert 200-399.
  5. Klicken Sie auf "Weiter", und deaktivieren Sie dann alle Trace-Anbieter außer "WWW Server", und deaktivieren Sie dann alle Anbieterbereiche außer "Rewrite".Screenshot der Einstellung, bei der die Anbieter nur auf W W W Server gesetzt sind und die Bereiche nur auf Rewrite.
  6. Klicken Sie auf "Fertig stellen", um die FRT-Regel zu speichern.

Wenn die Fehleranforderungsablaufverfolgung nach dem Umschreiben des URL-Moduls installiert wurde, ist der Bereich "Neu schreiben" in Ablaufverfolgungsanbietern möglicherweise nicht verfügbar. Wenn dort der Bereich "Neu schreiben" nicht angezeigt wird, wechseln Sie zu "Programme hinzufügen/entfernen", und führen Sie dann das Installationsprogramm des URL-Moduls im Reparaturmodus aus.

Analyse der Protokolldatei fehlgeschlagener Anforderungsverfolgungen

Nachdem die FRT-Regel erstellt wurde, senden Sie eine Anfrage an http://localhost/article/234/some-title. Dadurch wird in %SystemDrive%\inetpub\Logs\FailedReqLogFiles\ ein FRT-Protokoll erstellt. Sie können dieses Protokoll mit Internet Explorer öffnen, wo es als HTML-Dokument gerendert wird, das problemlos durchblättert werden kann. Im Folgenden finden Sie ein Beispiel für die URL-Neuschreibung bestimmter Ereignisse, die in der Ablaufverfolgungsprotokolldatei zu finden sind:

Screenshot des Zugriffs auf ein F R T-Protokoll mithilfe eines Webbrowsers. Das Protokoll zeigt die Liste der Neuschreibregeln und deren Neuschreiblogik an.

Diese Ereignisse zeigen, wie die Rewrite-Regeln ausgewertet wurden und wie die angeforderte URL durch ein Umschreibmodul geändert wurde. Sehen wir uns einige der Ereignisse an, um die Regelauswertungslogik besser zu verstehen:

URL_REWRITE_START – Dieses Ereignis gibt den Start der URL-Neuschreibereignisse an. Die Ereigniseigenschaften stellen die folgenden Informationen bereit:

  • Die Eingabe-URL-Zeichenfolge lautet "/article/234/some-title".
  • Es gab keine Abfragezeichenfolge.
  • Scope="Distributed" gibt an, dass Regeln lokal sind (d. a. die Regeln werden im Web.config für den Standort definiert) im Gegensatz zu globalen (d. s. auf Serverebene definiert).

RULE_EVALUATION_START – Dieses Ereignis gibt den Anfang der Regelauswertungslogik an. Die Ereigniseigenschaften enthalten die folgenden Informationen:

  • Regel verwendet reguläre Ausdrücke für die Mustersyntax (patternSyntax="ECMAScript")
  • Nachfolgende Regeln werden ausgewertet (StopProcessing = "false")
  • Die Regel wird auf der Websitestammebene definiert (RelativePath = "/")

PATTERN_MATCH – Dieses Ereignis enthält Informationen dazu, wie die URL mit dem Regelmuster abgeglichen wurde. Die Ereigniseigenschaften stellen die folgenden Informationen bereit:

  • Regelmuster war "." (das heißt, entspricht einem beliebigen Zeichen)
  • Die Eingabe-URL entspricht dem Muster erfolgreich.

CONDITIONS_EVALUATION_START – Da die Eingabe-URL mit dem Muster übereinstimmte, wurde die Auswertung der Bedingungen gestartet.

CONDITION_EVALUATION – Dieses Ereignis enthält die folgenden Informationen:

  • Der Wert von HTTP_HOST war "localhost" und entspricht dem Muster.
  • Da die Bedingungsver negation in der Regel (d. h. Negated="true") angegeben wurde, war die Bedingungsauswertung nicht erfolgreich.

CONDITIONS_EVALUATION_END – Dieses Ereignis zeigt, dass die Auswertung von Bedingungen für diese Regel nicht erfolgreich war.

RULE_EVALUATION_END – Dieses Ereignis zeigt an, dass die Regel die URL nicht geändert hat (Succeeded="false"). Dies liegt daran, dass die Regelbedingungsauswertung fehlgeschlagen ist.

RULE_EVALUATION_START – Dies zeigt sogar, dass die URL-Zeichenfolge an die zweite Regel übergeben wurde.

PATTERN_MATCH – Dieses Ereignis enthält Informationen dazu, wie die URL mit dem Regelmuster abgeglichen wurde. Die Ereigniseigenschaften teilen uns folgendes mit:

  • Das Regelmuster lautete: "^article/([0-9]+)/([0-9a-z]+)"
  • Die Eingabe-URL entspricht dem Muster erfolgreich.

REWRITE_ACTION – Dieses Ereignis gibt an, dass die Regelauswertung erfolgreich war und die URL in "/article.aspx" mit der Abfragezeichenfolge "id=234&title=some-title" umgeschrieben wurde.

Zusammenfassung

Url-Umschreiben spezifischer Ereignisse, die von FRT protokolliert werden, bieten sehr detaillierte Informationen, die für die Problembehandlung und das Debuggen von URL-Neuschreibregeln verwendet werden können, sowie nur, um zu verstehen, wie regelnauswertungslogik auf eine URL-Zeichenfolge angewendet wird.