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.
Med hänvisning till artikeln om felsökningsserien för Azure API Management är det här det femte scenariot i labbet. Se till att du har följt instruktionerna för labbkonfigurationen enligt detta för att återskapa problemet.
Ursprunglig produktversion: API Management Service
Ursprungligt KB-nummer: 4464928
Symptom
Resurs-API:et hämtar användarens personliga information, inlägg på sociala medier, kommentarer och foton och använder svaret som returneras för ett maskininlärningsprojekt. Efter några dagars användning började GetPosts-åtgärden att generera HTTP 403 – Förbjudet fel, medan de andra åtgärderna fungerar som förväntat.
{
"statusCode": 403,
"message": "Förbjuden"
}
Förutom ovanstående stöter vi också på HTTP 429 – för många begäranden när du anropar GetComments-åtgärden för varje andra begäran. Problemet löser sig automatiskt efter 10 sekunder, men det återkommer när det första anropet till API:et görs igen. Beteendet observeras inte för de andra åtgärderna.
{
"statusCode": 429,
"message": "Hastighetsgränsen har överskridits. Försök igen om 5 sekunder."
}
Felsökningsanvisningar
Felet HTTP 403 – Förbjudet kan utlösas när det finns en implementerad princip för åtkomstbegränsning.
Kontrollera APIM Inspector-spårningen. Du bör se att det finns en 'ip-filter'-princip som filtrerar (tillåter/nekar) anrop från specifika IP-adresser och/eller adressintervall.
Om du vill kontrollera omfånget för principen "ip-filter" väljer du knappen Beräkna effektiv princip . Om du inte ser någon princip för åtkomstbegränsning som implementeras i några omfång bör nästa valideringssteg göras på produktnivå genom att navigera till den associerade produkten och sedan klicka på alternativet Principer.
<inbound> <base /> <choose> <when condition="@(context.Operation.Name.Equals("GetPosts"))"> <ip-filter action="forbid"> <address-range from="0.0.0.0" to="255.255.255.255" /> </ip-filter> </when> </choose> </inbound>För det andra problemet (HTTP 429 – För många begäranden) följer vi samma procedur genom att kontrollera APIM-kontrollspårningen och kontrollera om det finns någon "rate-limit" eller "rate-limit-by-key"-princip implementerad i något omfång.
Om du beräknar den effektiva principen bör du lägga märke till en princip för åtkomstbegränsning (hastighetsgräns per nyckel) som implementeras i globalt omfång, dvs. under "Inkommande bearbetning" i alternativet Alla API:er.
<inbound> <choose> <when condition="@(context.Operation.Name.Equals("GetComments"))"> <rate-limit-by-key calls="1" renewal-period="10" increment-condition="@(context.Response.StatusCode == 200)" counter-key="@(context.Request.IpAddress)" /> </when> </choose> </inbound>
Läs mer om principer för ip-filter och rate-limit-by-key i APIM.
Kontakta oss för att få hjälp
Om du har frågor eller behöver hjälp skapar du en supportförfrågan eller frågar Azure community support. Du kan också skicka produktfeedback till Azure-feedbackcommunityn.