Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
DOTYCZY: NoSQL
Komunikat "Nagłówek żądania za duży" jest zgłaszany z kodem błędu HTTP 400. Ten błąd występuje, jeśli rozmiar nagłówka żądania wzrósł tak duży, że przekracza maksymalny dozwolony rozmiar. Zalecamy używanie najnowszej wersji zestawu SDK usługi Azure Cosmos DB dla platformy .NET. Zalecamy użycie wersji 3.x, ponieważ ta wersja główna dodaje śledzenie rozmiaru nagłówka do komunikatu o wyjątku.
Kroki rozwiązywania problemów
Komunikat "Nagłówek żądania jest zbyt duży", jeśli sesja lub token kontynuacji jest zbyt duży. W poniższych sekcjach opisano przyczynę problemu i jego rozwiązania w każdej kategorii.
Token sesji jest zbyt duży
Ta sekcja zawiera przegląd scenariuszy, w których token sesji jest zbyt duży.
Przyczyna
400 złych żądań najprawdopodobniej występuje, ponieważ token sesji jest zbyt duży. Jeśli następujące stwierdzenia są prawdziwe, token sesji jest zbyt duży:
- Błąd występuje w przypadku operacji punktowych, takich jak tworzenie, odczytywanie i aktualizowanie, gdy nie ma tokenu kontynuacji.
- Wyjątek został uruchomiony bez wprowadzania żadnych zmian w aplikacji. Token sesji rośnie wraz ze wzrostem liczby partycji w kontenerze. Liczba partycji zwiększa się wraz ze wzrostem ilości danych lub zwiększeniem przepływności.
Tymczasowe środki zaradcze
Uruchom ponownie aplikację kliencą, aby zresetować wszystkie tokeny sesji. W końcu token sesji wraca do poprzedniego rozmiaru, który spowodował problem. Aby całkowicie uniknąć tego problemu, użyj rozwiązania w następnej sekcji.
Rozwiązanie
Ważne
Zaktualizuj do co najmniej .NET v3.20.1 lub v2.16.1. Te pomniejsze wersje zawierają optymalizacje, które mają na celu zmniejszenie rozmiaru tokenu sesji, aby zapobiec zwiększaniu się nagłówka i osiągnięciu limitu rozmiaru.
- Postępuj zgodnie ze wskazówkami w artykułach z poradami dotyczącymi wydajności platformy .NET w wersji 3 lub .NET w wersji 2 . Przekonwertuj aplikację do używania trybu połączenia bezpośredniego z protokołem Transmission Control Protocol (TCP). Tryb połączenia bezpośredniego z protokołem TCP nie ma ograniczeń rozmiaru nagłówka takich jak protokół HTTP, dlatego pozwala uniknąć tego problemu. Upewnij się, że używasz najnowszej wersji zestawu SDK, która zawiera poprawkę działania operacji zapytań, gdy usługi międzyoperacyjne są niedostępne.
- Jeśli tryb połączenia bezpośredniego z protokołem TCP nie jest opcją dla twojego obciążenia, zamelioruj to, zmieniając poziom spójności klienta. Token sesji jest używany tylko w celu zachowania spójności sesji, czyli domyślnego poziomu spójności dla usługi Azure Cosmos DB. Inne poziomy spójności nie używają tokenu sesji.
Token kontynuacji jest za duży
Ta sekcja zawiera przegląd scenariuszy, w których token kontynuacji jest zbyt duży.
Przyczyna
400 nieprawidłowych żądań występuje w operacjach zapytań, w których token kontynuacji jest używany, jeśli token stał się zbyt duży. Ten błąd może również wystąpić, jeśli różne zapytania mają różne rozmiary tokenu kontynuacji.
Rozwiązanie
- Postępuj zgodnie ze wskazówkami w artykułach z poradami dotyczącymi wydajności platformy .NET w wersji 3 lub .NET w wersji 2 . Przekonwertuj aplikację do używania trybu połączenia bezpośredniego z protokołem TCP. Tryb połączenia bezpośredniego z protokołem TCP nie ma ograniczeń rozmiaru nagłówka takich jak protokół HTTP, dlatego pozwala uniknąć tego problemu.
- Jeśli tryb połączenia bezpośredniego z protokołem TCP nie jest opcją w przypadku twojego obciążenia, ustaw opcję
ResponseContinuationTokenLimitInKb
. Tę opcję można znaleźć wFeedOptions
w wersji 2 lub wQueryRequestOptions
w wersji 3.
Następne kroki
- Diagnozowanie i rozwiązywanie problemów podczas korzystania z zestawu .NET SDK usługi Azure Cosmos DB.
- Dowiedz się więcej o wytycznych dotyczących wydajności platformy .NET w wersji 3 i .NET w wersji 2.