Az Azure Cosmos DB jogosulatlan kivételeinek diagnosztizálása és hibaelhárítása
A KÖVETKEZŐRE VONATKOZIK: NoSQL
HTTP 401: A HTTP-kérelemben található MAC-aláírás nem ugyanaz, mint a számított aláírás. Ha a 401-as hibaüzenetet kapta: "A HTTP-kérelemben talált MAC-aláírás nem ugyanaz, mint a számított aláírás", az alábbi forgatókönyvek okozhatják.
Régebbi SDK-k esetén a kivétel érvénytelen JSON-kivételként jelenhet meg a helyes 401-hez nem engedélyezett kivétel helyett. Az újabb SDK-k megfelelően kezelik ezt a forgatókönyvet, és érvényes hibaüzenetet adnak.
Hibaelhárítási lépések
Az alábbi lista a jogosulatlan kivételek ismert okait és megoldásait tartalmazza.
A kulcs nem volt megfelelően elforgatva, ez a leggyakoribb forgatókönyv
A 401 MAC-aláírás röviddel a kulcsváltás után látható, és végül módosítások nélkül leáll.
Solution
Lecserélődött a kulcs, és a kulcsváltás során nem követték az ajánlott eljárásokat. Az Azure Cosmos DB-fiók kulcsváltása az Azure Cosmos DB-fiók méretétől függően akár néhány másodperctől akár napokig is eltarthat.
A kulcs helytelenül van konfigurálva
A 401 MAC-aláírással kapcsolatos probléma konzisztens lesz, és az adott kulcsot használó összes hívás esetében előfordul.
Solution
A kulcs helytelenül van konfigurálva az alkalmazásban, és nem a megfelelő kulcsot használja a fiókhoz, vagy a teljes kulcsot nem másolták át.
Az alkalmazás írási műveletekhez használja a csak olvasható kulcsokat
A 401 MAC-aláírási probléma csak olyan írási műveleteknél fordul elő, mint a létrehozás vagy a csere, de az olvasási kérelmek sikeresek.
Solution
Váltson az alkalmazásra olvasási/írási kulcs használatára, hogy a műveletek sikeresen befejeződjenek.
Versenyfeltétel tároló létrehozásával
A 401 MAC-aláírással kapcsolatos probléma röviddel a tároló létrehozása után látható. Ez a probléma csak a tároló létrehozásának befejezéséig jelentkezik.
Solution
Van egy versenyfeltétel a tárolók létrehozásával. Egy alkalmazáspéldány a tároló létrehozása előtt próbál hozzáférni a tárolóhoz. Ennek a versenyfeltételnek a leggyakoribb forgatókönyve az, ha az alkalmazás fut, és a tárolót ugyanazzal a névvel törli és újra létrehozza. Az SDK megpróbálja használni az új tárolót, de a tároló létrehozása még folyamatban van, így nem rendelkezik a kulcsokkal.
A tömeges mód engedélyezve
Ha engedélyezve van a tömeges mód, az olvasási és írási műveletek a legjobb hálózati teljesítményre vannak optimalizálva, és egy dedikált Tömeges API-val küldik el a háttérrendszernek. A tömeges módban végzett olvasási műveletek során fellépő 401-hiba gyakran azt jelenti, hogy az alkalmazás írásvédett kulcsokat használ.
Megoldás
Használja az olvasási/írási kulcsokat vagy az engedélyezési mechanizmust írási hozzáféréssel, ha a tömeges mód engedélyezve van.
Következő lépések
- Az Azure Cosmos DB .NET SDK használatakor felmerülő problémák diagnosztizálása és elhárítása .
- Ismerje meg a .NET v3 és a .NET v2 teljesítményre vonatkozó irányelveit.
- Az Azure Cosmos DB Java v4 SDK használatakor felmerülő problémák diagnosztizálása és elhárítása .
- További információ a Java v4 SDK teljesítményre vonatkozó irányelveiről.