Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
SE APLICA A: NoSQL
El mensaje "Encabezado de solicitud demasiado grande" se muestra con un código de error HTTP 400. Este error se produce cuando el tamaño del encabezado de solicitud ha crecido tanto que supera el tamaño máximo permitido. Se recomienda usar la versión más reciente del SDK de Azure Cosmos DB para .NET. Se recomienda usar la versión 3.x porque esta versión principal agrega el seguimiento del tamaño del encabezado al mensaje de excepción.
Pasos para solucionar problemas
El mensaje "Encabezado de solicitud demasiado grande" aparece si el token de sesión o de continuación es demasiado grande. En las secciones siguientes se describe la causa del problema y su solución en cada categoría.
El token de sesión es demasiado grande
En esta sección se revisan los escenarios en los que el token de sesión es demasiado grande.
Causa
Es más probable que se produzca una solicitud incorrecta 400 porque el token de sesión es demasiado grande. Si se cumplen las siguientes condiciones, el token de sesión es demasiado grande:
- El error se produce en operaciones puntuales como crear, leer y actualizar, en las que no hay un token de continuación.
- La excepción se inició sin realizar cambios en la aplicación. El token de sesión crece a medida que aumenta el número de particiones en el contenedor. El número de particiones crece a medida que también lo hace la cantidad de datos o si se aumenta el rendimiento.
Mitigación temporal
Reinicie la aplicación cliente para restablecer todos los tokens de sesión. Es posible que el token de sesión vuelva a crecer hasta el tamaño anterior que causó el problema. Para evitar este problema por completo, use la solución de la sección siguiente.
Solución
Importante
Actualice al menos a .NET v3.20.1 o v2.16.1. Estas versiones secundarias contienen optimizaciones para reducir el tamaño del token de sesión, con el fin de evitar que el encabezado crezca y alcance el límite de tamaño.
- Siga las instrucciones de los artículos sobre las sugerencias de rendimiento para .NET v3 o .NET v2. Convierta la aplicación para que use el modo de conexión directa con el Protocolo de control de transmisión (TCP). El modo de conexión directa con el protocolo TCP no tiene la restricción de tamaño de encabezado como el protocolo HTTP, por lo que se evita este problema. Asegúrese de usar la versión más reciente del SDK, que tiene una corrección para las operaciones de consulta cuando la interoperabilidad del servicio no está disponible.
- Si el modo de conexión directa con el protocolo TCP no es una opción para su carga de trabajo, mitigue el problema cambiando el nivel de coherencia del cliente. El token de sesión solo se usa para la coherencia de la sesión, que es el nivel de coherencia predeterminado para Azure Cosmos DB. Los otros niveles de coherencia no usan el token de sesión.
El token de continuación es demasiado grande
En esta sección se revisan los escenarios en los que el token de continuación es demasiado grande.
Causa
La solicitud incorrecta con código de error 400 se produce en operaciones de consulta en las que se usa el token de continuación si el token ha crecido demasiado. Este error también puede producirse si diferentes consultas tienen diferentes tamaños de token de continuación.
Solución
- Siga las instrucciones de los artículos sobre las sugerencias de rendimiento para .NET v3 o .NET v2. Convierta la aplicación para que use el modo de conexión directa con el protocolo TCP. El modo de conexión directa con el protocolo TCP no tiene la restricción de tamaño de encabezado como el protocolo HTTP, por lo que se evita este problema.
- Si el modo de conexión directa con el protocolo TCP no es una opción para su carga de trabajo, establezca la opción
ResponseContinuationTokenLimitInKb
. Puede encontrar esta opción enFeedOptions
en v2 o enQueryRequestOptions
en v3.
Pasos siguientes
- Diagnóstico y solución de problemas al utilizar el SDK de Azure Cosmos DB para .NET.
- Más información sobre las directrices de rendimiento de .NET v3 y .NET v2.