Diagnostisera och felsöka obehöriga undantag i Azure Cosmos DB
GÄLLER FÖR: NoSQL
HTTP 401: MAC-signaturen som hittades i HTTP-begäran är inte samma som den beräknade signaturen. Om du fick 401-felmeddelandet "MAC-signaturen som hittades i HTTP-begäran är inte samma som den beräknade signaturen" kan den orsakas av följande scenarier.
För äldre SDK:er kan undantaget visas som ett ogiltigt JSON-undantag i stället för rätt 401 obehörigt undantag. Nyare SDK:er hanterar det här scenariot korrekt och ger ett giltigt felmeddelande.
Felsökningsanvisningar
Följande lista innehåller kända orsaker och lösningar för obehöriga undantag.
Nyckeln roterades inte korrekt är det vanligaste scenariot
401 MAC-signaturen visas kort efter en nyckelrotation och stoppas så småningom utan några ändringar.
Lösning:
Nyckeln roterades och följer inte metodtipsen. Rotationen av Azure Cosmos DB-kontonyckeln kan ta allt från några sekunder till eventuellt dagar beroende på storleken på Azure Cosmos DB-kontot.
Nyckeln är felkonfigurerad
401 MAC-signaturproblemet är konsekvent och inträffar för alla anrop som använder den nyckeln.
Lösning:
Nyckeln är felkonfigurerad i programmet och använder fel nyckel för kontot, eller så kopierades inte hela nyckeln.
Programmet använder skrivskyddade nycklar för skrivåtgärder
401 MAC-signaturproblemet uppstår bara för skrivåtgärder som att skapa eller ersätta, men läsbegäranden lyckas.
Lösning:
Växla programmet till att använda en läs-/skrivnyckel så att åtgärderna kan slutföras.
Konkurrensvillkor med skapa container
Problemet med 401 MAC-signaturen visas kort efter att en container har skapats. Det här problemet inträffar bara tills containern har skapats.
Lösning:
Det finns ett konkurrenstillstånd när containern skapas. En programinstans försöker komma åt containern innan containern har skapats. Det vanligaste scenariot för det här konkurrensvillkoret är om programmet körs och containern tas bort och återskapas med samma namn. SDK:n försöker använda den nya containern, men containern skapas fortfarande så att den inte har nycklarna.
Massläge aktiverat
När du använder Massläge aktiverat optimeras läs- och skrivåtgärder för bästa nätverksprestanda och skickas till serverdelen via ett dedikerat bulk-API. 401-fel vid läsåtgärder med Massläge aktiverat innebär ofta att programmet använder skrivskyddade nycklar.
Lösning
Använd läs-/skrivnycklarna eller auktoriseringsmekanismen med skrivåtkomst när du utför åtgärder med Massläge aktiverat.
Nästa steg
- Diagnostisera och felsöka problem när du använder Azure Cosmos DB .NET SDK.
- Lär dig mer om prestandariktlinjer för .NET v3 och .NET v2.
- Diagnostisera och felsöka problem när du använder Azure Cosmos DB Java v4 SDK.
- Läs mer om prestandariktlinjer för Java v4 SDK.