es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Net Core Kestrel alcanzando el límite de GET para datos JSON.

Estoy ocupado ajustando los límites en una aplicación Kestrel de .Net Core para permitir grandes cantidades de datos JSON para ser enviados a través de una solicitud GET.

builder.UseKestrel(options => {
    int oneByte = 1048576;
    options.Limits.MaxRequestLineSize = (4 * oneByte);
    options.Limits.MaxRequestBufferSize = (4 * oneByte);
    options.Limits.MaxResponseBufferSize = (4 * oneByte);
    options.Limits.MaxRequestBodySize = (10 * oneByte);
});

Así que he establecido prácticamente todo en un límite de 4MB (excepto MaxRequestBodySize), pero todavía estoy alcanzando un límite de alrededor de 2.1MB de datos JSON. Sé que no es normal utilizar una gran cantidad de datos JSON en una solicitud GET, pero ¿por qué sigue siendo limitado cuando está por debajo de mi umbral de 4MB?

¿Es posible que se esté limitando en la cantidad de propiedades en los datos JSON en lugar del tamaño y hay alguna manera de aumentar este límite?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Es posible que la limitación no esté en el tamaño de los datos JSON, sino en el número de propiedades que se envían. En este caso, aumentar el límite de tamaño no resolverá el problema.

    Para aumentar el límite en el número de propiedades en los datos JSON, puede intentar configurar la propiedad MaxRequestHeadersTotalSize. Esta propiedad establece el límite de tamaño total para todas las cabeceras de solicitud en bytes. Puede intentar aumentar el límite de tamaño para ver si permite enviar más propiedades.

    Por ejemplo:

    builder.UseKestrel(options => {
        int oneByte = 1048576;
        options.Limits.MaxRequestLineSize = (4 * oneByte);
        options.Limits.MaxRequestBufferSize = (4 * oneByte);
        options.Limits.MaxResponseBufferSize = (4 * oneByte);
        options.Limits.MaxRequestBodySize = (10 * oneByte);
        options.Limits.MaxRequestHeadersTotalSize = (4 * oneByte);
    });
    

    Tenga en cuenta que aumentar estos límites puede tener implicaciones de seguridad, por lo que es importante revisar y probar adecuadamente los cambios. Puede valer la pena considerar enfoques alternativos para enviar grandes cantidades de datos, como utilizar solicitudes POST en lugar de GET.

Comments are closed.