Kommentar
Å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.
Meddelandet "Begärandehuvudet är för stort" genereras med HTTP-felkoden 400. Det här felet uppstår om storleken på begärandehuvudet blir så stor att den överskrider den maximala tillåtna storleken.
Vi rekommenderar att du använder den senaste versionen av Azure Cosmos DB SDK för .NET. Du bör använda version 3.x eftersom den här huvudversionen lägger till spårning av rubrikstorlek i undantagsmeddelandet.
Felsökningssteg
Meddelandet "Begärandehuvudet är för stort" inträffar om sessionen eller fortsättningstoken är för stor. I följande avsnitt beskrivs orsaken till problemet och dess lösning i varje kategori.
Sessionstoken är för stor
Det här avsnittet granskar scenarier där sessionstoken är för stor.
Orsak
En 400 felaktig begäran inträffar troligen eftersom sessionstoken är för stor. Om följande påståenden är sanna är sessionstoken för stor:
- Felet uppstår vid punktåtgärder som att skapa, läsa och uppdatera där det inte finns någon fortsättningstoken.
- Undantaget startade utan att göra några ändringar i programmet. Sessionstoken växer när antalet partitioner ökar i containern. Antalet partitioner ökar när mängden data ökar eller om dataflödet ökar.
Tillfällig åtgärd
Starta om klientprogrammet för att återställa alla sessionstoken. Slutligen växer sessionstoken tillbaka till den tidigare storlek som orsakade problemet. Undvik det här problemet helt genom att använda lösningen i nästa avsnitt.
Solution
Important
Uppgradera till minst .NET v3.20.1 eller v2.16.1. Dessa mindre versioner innehåller optimeringar för att minska sessionstokens storlek för att förhindra att rubriken växer och når storleksgränsen.
- Följ riktlinjerna i artiklarna prestandatips för .NET v3 eller .NET v2 . Konvertera programmet till att använda direktanslutningsläget med TCP (Transmission Control Protocol). Direktanslutningsläget med TCP-protokollet har inte begränsningen för rubrikstorlek som HTTP-protokollet, så det undviker det här problemet. Se till att du använder den senaste versionen av SDK:t, som har en korrigering för frågeåtgärder när tjänstens interoperabilitet inte är tillgänglig.
- Om direktanslutningsläget med TCP-protokollet inte är ett alternativ för din arbetsbelastning kan du minimera det genom att ändra klientkonsekvensnivån. Sessionstoken används endast för sessionskonsekvens, vilket är standardkonsekvensnivån för Azure Cosmos DB. Andra konsekvensnivåer använder inte sessionstoken.
Kontinuitetstoken är för stor
Det här avsnittet granskar scenarier där fortsättningstoken är för stor.
Orsak
Den felaktiga 400-begäran inträffar vid frågeåtgärder där fortsättningstoken används om token blir för stor. Det här felet kan också inträffa om olika frågor har olika fortsättningstokenstorlekar.
Solution
- Följ riktlinjerna i artiklarna prestandatips för .NET v3 eller .NET v2 . Konvertera programmet till att använda direktanslutningsläget med TCP-protokollet. Direktanslutningsläget med TCP-protokollet har inte begränsningen för rubrikstorlek som HTTP-protokollet, så det undviker det här problemet.
- Om direktanslutningsläget med TCP-protokollet inte är ett alternativ för din arbetsbelastning anger du alternativet
ResponseContinuationTokenLimitInKb. Du hittar det här alternativet iFeedOptionsv2 ellerQueryRequestOptionsi v3.
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