Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
GÄLLER FÖR: Alla API Management-nivåer
Genom att tillhandahålla ett ProxyError objekt tillåter Azure API Management utgivare att svara på felvillkor som kan inträffa under bearbetningen av begäranden. Objektet ProxyError nås via kontexten . Egenskapen LastError och kan användas av principer i principavsnittet on-error . Den här artikeln innehåller en referens för felhanteringsfunktionerna i Azure API Management.
Felhantering i API Management
Principer i Azure API Management är indelade i inbound, backend, outboundoch on-error avsnitt som visas i följande exempel.
<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>
Under bearbetningen av en begäran körs inbyggda steg tillsammans med alla principer som finns i omfånget för begäran. Om ett fel inträffar hoppar bearbetningen omedelbart till principavsnittet on-error .
Principavsnittet on-error kan användas i valfritt omfång. API-utgivare kan konfigurera anpassade beteenden som att logga felet till händelsehubbar eller skapa ett nytt svar för att återgå till anroparen.
Kommentar
Avsnittet on-error finns inte i principer som standard. Om du vill lägga till avsnittet i on-error en princip bläddrar du till önskad princip i principredigeraren och lägger till den. Mer information om hur du konfigurerar principer finns i Principer i API Management.
Om det inte finns något on-error avsnitt får anropare 400 eller 500 HTTP-svarsmeddelanden om ett feltillstånd inträffar.
Principer som tillåts i on-error
Följande principer kan användas i principavsnittet on-error .
- välja
- sätt-variabel
- sök-och-ersätt
- return-response
- set-header
- inställningsmetod
- set-status
- send-request
- skicka endavägsförfrågan
- log-to-eventhub
- json-to-xml
- xml-to-json
- limit-concurrency
- mock-response
- Igen
- spåra
LastError
När ett fel inträffar och kontrollen hoppar till on-error principavsnittet lagras felet i kontexten. Egenskapen LastError , som kan nås av principer i avsnittet on-error . LastError har följande egenskaper.
Dricks
Du kan komma åt statuskoden via kontext. Response.StatusCode.
Kommentar
Alla principer har ett valfritt id attribut som kan läggas till i principens rotelement. Om det här attributet finns i en princip när ett feltillstånd inträffar kan värdet för attributet hämtas med hjälp av context.LastError.PolicyId egenskapen .
Fördefinierade fel för inbyggda steg
Följande fel är fördefinierade för feltillstånd som kan inträffa under utvärderingen av inbyggda bearbetningssteg.
| Källa | Villkor | Anledning | Meddelande |
|---|---|---|---|
| konfiguration | Uri matchar inte något API eller någon åtgärd | OperationNotFound | Det går inte att matcha inkommande begäran till en åtgärd. |
| auktorisering | Prenumerationsnyckeln har inte angetts | Abonnemangsnyckel saknas | Åtkomst nekad på grund av att prenumerationsnyckeln saknas. Se till att inkludera prenumerationsnyckeln när du gör begäranden till det här API:et. |
| auktorisering | Värdet för prenumerationsnyckeln är ogiltigt | PrenumerationsnyckelOgiltig | Åtkomst nekad på grund av ogiltig prenumerationsnyckel. Se till att ange en giltig nyckel för en aktiv prenumeration. |
| multipel | Nedströmsanslutning (från en klient till en API Management-gateway) avbröts av klienten medan begäran var väntande | Klientanslutningsfel | multipel |
| multipel | Uppströmsanslutning (från en API Management-gateway till en serverdelstjänst) upprättades inte eller avbröts av serverdelen | Bakendanslutningsfel | multipel |
| multipel | Körningsund undantag hade inträffat under utvärderingen av ett visst uttryck | Utvärderingsfel för uttrycksvärde | multipel |
Fördefinierade fel för principer
Följande fel är fördefinierade för feltillstånd som kan inträffa under principutvärderingen.
| Källa | Villkor | Anledning | Meddelande |
|---|---|---|---|
| hastighetsgräns | Hastighetsgränsen har överskridits | RateLimitExceededed | Hastighetsgränsen har överskridits |
| kvot | Kvoten har överskridits | Kvot Överskriden | Slut på kvot för samtalsvolym. Kvoten fylls på i xx:xx:xx. -or- Slut på bandbreddskvot. Kvoten fylls på i xx:xx:xx. |
| jsonp | Värdet för motringningsparametern är ogiltigt (innehåller fel tecken) | Ogiltig Återuppringningsparameter | Värdet för motringningsparametern {callback-parameter-name} är inte en giltig JavaScript-identifierare. |
| ip-filter | Det gick inte att parsa anroparens IP-adress från begäran | Misslyckades att tolka uppringarens IP | Det gick inte att upprätta IP-adressen för anroparen. Åtkomst nekad. |
| ip-filter | Anroparens IP-adress finns inte i listan över tillåtna | CallerIpEjTillåten | Anroparens IP-adress {ip-address} är inte tillåten. Åtkomst nekad. |
| ip-filter | Uppringarens IP-adress finns i en lista över blockerade | Samtals-IP blockerad | Anroparens IP-adress blockeras. Åtkomst nekad. |
| kontrollhuvud | Obligatoriskt huvud visas inte eller så saknas värdet | HeaderNotFound | Det gick inte att hitta rubriken {header-name} i begäran. Åtkomst nekad. |
| kontrollhuvud | Obligatoriskt huvud visas inte eller så saknas värdet | RubrikvärdeEjTillåtet | Rubrik {header-name} värde för {header-value} tillåts inte. Åtkomst nekad. |
| validate-jwt | JWT saknas i begäran | TokenNotPresent | JWT finns inte. |
| validate-jwt | Signaturverifieringen misslyckades | Ogiltig Token-Signatur | <meddelande från jwt-biblioteket>. Åtkomst nekad. |
| validate-jwt | Ogiltig målgrupp | TokenMottagareEjTillåten | <meddelande från jwt-biblioteket>. Åtkomst nekad. |
| validate-jwt | Ogiltig utfärdare | Tokenutgivare ej tillåten | <meddelande från jwt-biblioteket>. Åtkomst nekad. |
| validate-jwt | Token har upphört att gälla | Token har gått ut | <meddelande från jwt-biblioteket>. Åtkomst nekad. |
| validate-jwt | Signaturnyckeln löstes inte av ID | TokenSignatureKeyNotFound | <meddelande från jwt-biblioteket>. Åtkomst nekad. |
| validate-jwt | Nödvändiga anspråk saknas från token | TokenClaimNotFound | JWT saknar följande anspråk: <c1>, <c2>, ... Åtkomst nekad. |
| validate-jwt | Matchningsfel för anspråksvärden | TokenFordringsvärdeInteTillåtet | Anspråksvärdet {claim-name} för {claim-value} tillåts inte. Åtkomst nekad. |
| validate-jwt | Andra valideringsfel | Ogiltig Jwt | <meddelande från jwt-biblioteket> |
| forward-request eller send-request | HTTP-svarsstatuskod och huvuden togs inte emot från serverdelen inom den konfigurerade tidsgränsen | Tidsavbrott | multipel |
Exempel
Ange en API-princip till:
<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>
och att skicka en obehörig begäran resulterar i följande svar:
Relaterat innehåll
Mer information om hur du arbetar med principer finns i:
- Självstudie: Transformera och skydda ditt API
- Principreferens för en fullständig lista över principinstruktioner och deras inställningar
- Principuttryck
- Ange eller redigera principer
- Återanvända principkonfigurationer
- Lagringsplats för principfragment
- Lagringsplats för principlekplats
- Principverktyg för Azure API Management
- Få Hjälp med Copilot för att skapa, förklara och felsöka principer