Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
GILT FÜR: Alle API Management-Ebenen
Durch die Bereitstellung eines ProxyError Azure API Management-Objekts können Herausgeber auf Fehlerbedingungen reagieren, die während der Verarbeitung von Anforderungen auftreten können. Auf das ProxyError Objekt wird über die Eigenschaft context.LastError zugegriffen. Richtlinien im on-error Richtlinienabschnitt können das ProxyError Objekt verwenden. Dieser Artikel dient als Referenz für die Fehlerbehandlungsfunktionen in Azure API Management.
Fehlerbehandlung in API Management
Die Richtlinien in Azure API Management sind in die Abschnitte inbound, backend, outbound und on-error unterteilt, wie im folgenden Beispiel gezeigt.
<policies>
<inbound>
<!-- statements to be applied to the request go here -->
</inbound>
<backend>
<!-- statements to be applied before the request is
forwarded to the backend service go here -->
</backend>
<outbound>
<!-- statements to be applied to the response go here -->
</outbound>
<on-error>
<!-- statements to be applied if there is an error
condition go here -->
</on-error>
</policies>
Während der Verarbeitung einer Anforderung werden integrierte Schritte zusammen mit allen Richtlinien ausgeführt, die für die Anforderung gelten. Wenn ein Fehler auftritt, wechselt die Verarbeitung sofort zum Richtlinienabschnitt on-error.
Der Richtlinienabschnitt on-error kann in jedem Bereich verwendet werden. API-Herausgeber können benutzerdefiniertes Verhalten konfigurieren, z. B. das Protokollieren des Fehlers bei Azure Event Hubs oder das Erstellen einer neuen Antwort, um zum Aufrufer zurückzukehren.
Hinweis
Der on-error Abschnitt ist standardmäßig nicht in Richtlinien vorhanden. Um einer Richtlinie den Abschnitt on-error hinzuzufügen, navigieren Sie im Richtlinien-Editor zur gewünschten Richtlinie, und fügen Sie sie hinzu. Weitere Informationen zum Konfigurieren von Richtlinien finden Sie unter Richtlinien in API Management.
Wenn kein on-error Abschnitt vorhanden ist, erhalten Anrufer 400 oder 500 HTTP-Antwortmeldungen, wenn eine Fehlerbedingung auftritt.
Im On-error-Abschnitt zulässige Richtlinien
Die folgenden Richtlinien können im Richtlinienabschnitt on-error verwendet werden.
- wählen
- Set-Variable
- Suchen und Ersetzen
- Rückgabeantwort
- Kopfzeile festlegen
- Setzmethode
- Set-Status
- Send-Request
- send-one-way-request
- log-to-eventhub
- json-to-xml
- xml-to-json
- Gleichzeitigkeit begrenzen
- Simulierte Antwort
- wiederholen
- Ablaufverfolgung
lastError
Wenn ein Fehler auftritt und die Kontrolle zum on-error Richtlinienabschnitt springt, wird der Fehler in der LastError-Eigenschaft des Kontextes gespeichert. Die Richtlinien im LastError hat die folgenden Eigenschaften.
| Name | Typ | Beschreibung | Erforderlich |
|---|---|---|---|
Source |
Zeichenfolge | Name des Elements, bei dem der Fehler aufgetreten ist. Kann entweder der Schrittname einer Richtlinie oder einer integrierten Pipeline sein. | Ja |
Reason |
Zeichenfolge | Computerfreundlicher Fehlercode, der bei der Fehlerbehandlung verwendet werden kann. | Nein |
Message |
Zeichenfolge | Für Menschen lesbare Fehlerbeschreibung. | Ja |
Scope |
Zeichenfolge | Name des Bereichs, in dem der Fehler aufgetreten ist. | Nein |
Section |
Zeichenfolge | Name des Abschnitts, in dem der Fehler aufgetreten ist. Mögliche Werte: inbound, backend, outboundoder on-error. |
Nein |
Path |
Zeichenfolge | Gibt eine geschachtelte Richtlinienhierarchie an, z. B choose[3]\\when[2]. . Mehrere Instanzen einer geschachtelten Richtlinie werden beginnend bei 1 indexiert. |
Nein |
PolicyId |
Zeichenfolge | Wert des Attributs id, sofern vom Kunden festgelegt, in der Richtlinie, in der der Fehler aufgetreten ist. |
Nein |
Tipp
Sie können den Statuscode über context.Response.StatusCode abrufen.
Hinweis
Alle Richtlinien verfügen über ein optionales id-Attribut, das dem Stammelement der Richtlinie hinzugefügt werden kann. Wenn dieses Attribut in einer Richtlinie vorhanden ist, wenn eine Fehlerbedingung auftritt, können Sie den Wert des Attributs mithilfe der context.LastError.PolicyId Eigenschaft abrufen.
Vordefinierte Fehler für integrierte Schritte
Die folgenden Fehler sind für Fehlerbedingungen, die während der Auswertung der integrierten Verarbeitungsschritte auftreten können, vordefiniert.
| Quelle | Bedingung | Grund | Nachricht |
|---|---|---|---|
| Konfiguration | Der URI stimmt nicht mit einer API oder einem Vorgang überein. | OperationNichtGefunden (OperationNotFound) | Eingehende Anforderung kann keinem Vorgang zugeordnet werden. |
| Autorisierung | Abonnementschlüssel nicht bereitgestellt | AbonnementschlüsselNichtGefunden | Der Zugriff wurde aufgrund eines fehlenden Abonnementschlüssels verweigert. Stellen Sie sicher, dass der Abonnementschlüssel beim Senden von Anforderungen an diese API enthalten ist. |
| Autorisierung | Wert des Abonnementschlüssels ungültig | Der Abonnementschlüssel ist ungültig | Der Zugriff wurde aufgrund eines ungültigen Abonnementschlüssels verweigert. Stellen Sie sicher, dass Sie einen gültigen Schlüssel für ein aktives Abonnement bereitstellen. |
| Mehrere | Der Client hat eine nachgeschaltete Verbindung (von einem Client zu einem API-Verwaltungsgateway) abgebrochen, während die Anforderung aussteht. | Clientverbindungsfehler | Mehrere |
| Mehrere | Das Back-End hat den Vorgang abgebrochen oder konnte keine Upstream-Verbindung herstellen (vom API-Management-Gateway zu einem Back-End-Dienst) | Backend-Verbindungsfehler | Mehrere |
| Mehrere | Während der Auswertung eines bestimmten Ausdrucks ist eine Laufzeitausnahme aufgetreten | ExpressionValueEvaluationFailure | Mehrere |
Vordefinierte Fehler für Richtlinien
Die folgenden Fehler sind für Fehlerbedingungen vordefiniert, die bei der Richtlinienauswertung auftreten können.
| Quelle | Bedingung | Grund | `Message` |
|---|---|---|---|
| Ratenbegrenzung | Ratenlimit überschritten | Ratenbegrenzung überschritten | Das Rate-Limit wurde überschritten. |
| Kontingent | Kontingent überschritten | Kontingentüberschreitung | Das Aufrufvolumenkontigent ist erschöpft. Das Kontingent wird in xx:xx:xx aufgefüllt. –oder– Das Bandbreitenkontingent ist erschöpft. Das Kontingent wird in xx:xx:xx aufgefüllt. |
| jsonp | Wert des Rückrufparameters ungültig (enthält falsche Zeichen) | Ungültiger Rückrufparameter | Der Wert des Rückrufparameters {callback-parameter-name} ist kein gültiger JavaScript-Bezeichner. |
| IP-Filter | Fehler beim Parsen der IP-Adresse des Aufrufers aus Anforderung | FailedToParseCallerIP | Fehler beim Ermitteln der IP-Adresse des Aufrufers. Der Zugriff wurde verweigert. |
| IP-Filter | Anrufer-IP ist in der Liste zulässiger Adressen nicht enthalten | CallerIpNotAllowed | Die IP-Adresse des Aufrufers {Ip-Adresse} ist nicht zulässig. Der Zugriff wurde verweigert. |
| IP-Filter | IP-Adresse des Aufrufers in Liste blockierter IP-Adressen | Anrufer-IP blockiert | Die IP-Adresse des Aufrufers ist blockiert. Der Zugriff wurde verweigert. |
| Check-Header | Erforderlicher Header nicht angegeben oder Wert fehlt | HeaderNichtGefunden | Header {header-name} wurde nicht in der Anforderung gefunden. Der Zugriff wurde verweigert. |
| check-header | Erforderlicher Header nicht angegeben oder Wert fehlt | HeaderwertNichtZulässig | Der Wert {header-value} des Headers {header-name} ist nicht zulässig. Der Zugriff wurde verweigert. |
| Validieren von JWT | JSON-Webtoken (JWT) fehlt in der Anforderung | TokenNichtVorhanden | JWT ist nicht vorhanden. |
| Validieren von JWT | Fehler bei der Signaturüberprüfung | TokenSignaturUngültig | <Meldung der JWT-Bibliothek>. Der Zugriff wurde verweigert. |
| Validieren von JWT | Ungültige Zielgruppe | TokenAudienceNotAllowed | <Meldung der JWT-Bibliothek>. Der Zugriff wurde verweigert. |
| Validieren von JWT | Ungültiger Aussteller | TokenIssuerNotAllowed | <Meldung der JWT-Bibliothek>. Der Zugriff wurde verweigert. |
| Validieren von JWT | Token abgelaufen | Token abgelaufen | <Meldung der JWT-Bibliothek>. Der Zugriff wurde verweigert. |
| Validieren von JWT | Signaturschlüssel wurde nicht von ID aufgelöst | TokenSignatureKeyNotFound | <Meldung der JWT-Bibliothek>. Der Zugriff wurde verweigert. |
| Validieren von JWT | Erforderliche Ansprüche aus Token fehlen | TokenClaimNichtGefunden | JWT fehlen die folgenden Claims: <c1>, <c2>, ... Der Zugriff wurde verweigert. |
| Validieren von JWT | Abweichung bei Anspruchswerten | TokenanspruchswertNichtZulässig | Der Wert {claim-value} des Anspruchs {claim-name} ist nicht zulässig. Der Zugriff wurde verweigert. |
| Validieren von JWT | Andere Überprüfungsfehler | JWT ungültig | <Meldung der JWT-Bibliothek> |
| forward-request oder send-request | HTTP-Antwortstatuscode und Header wurden innerhalb des konfigurierten Timeouts nicht vom Back-End empfangen. | Timeout | Mehrere |
Beispiel
Legen Sie eine API-Richtlinie auf den folgenden Wert fest:
<policies>
<inbound>
<base />
</inbound>
<backend>
<base />
</backend>
<outbound>
<base />
</outbound>
<on-error>
<set-header name="ErrorSource" exists-action="override">
<value>@(context.LastError.Source)</value>
</set-header>
<set-header name="ErrorReason" exists-action="override">
<value>@(context.LastError.Reason)</value>
</set-header>
<set-header name="ErrorMessage" exists-action="override">
<value>@(context.LastError.Message)</value>
</set-header>
<set-header name="ErrorScope" exists-action="override">
<value>@(context.LastError.Scope)</value>
</set-header>
<set-header name="ErrorSection" exists-action="override">
<value>@(context.LastError.Section)</value>
</set-header>
<set-header name="ErrorPath" exists-action="override">
<value>@(context.LastError.Path)</value>
</set-header>
<set-header name="ErrorPolicyId" exists-action="override">
<value>@(context.LastError.PolicyId)</value>
</set-header>
<set-header name="ErrorStatusCode" exists-action="override">
<value>@(context.Response.StatusCode.ToString())</value>
</set-header>
<base />
</on-error>
</policies>
Das Senden einer nicht autorisierten Anforderung führt zu der folgenden Antwort:
Zugehöriger Inhalt
Weitere Informationen zum Arbeiten mit Richtlinien finden Sie hier:
- Tutorial: Transformieren und Schützen Ihrer API
- Unter Richtlinienreferenz finden Sie eine komplette Liste der Richtlinienanweisungen und der zugehörigen Einstellungen.
- Richtlinienausdrücke
- Festlegen oder Bearbeiten von Richtlinien
- Richtlinienkonfigurationen wiederverwenden
- Repository für Richtliniencodeausschnitte
- Policy-Beispiel-Repository
- Azure API Management-Richtlinientoolkit
- Anfordern von Copilot-Unterstützung zum Erstellen, Erläutern und Problembehandlung von Richtlinien