Evento
Campionato do Mundo de Power BI DataViz
Feb 14, 4 PM - Mar 31, 4 PM
Con 4 posibilidades de entrar, poderías gañar un paquete de conferencias e facelo ao Live Grand Finale en Las Vegas
Máis informaciónEste explorador xa non é compatible.
Actualice a Microsoft Edge para dispoñer das funcionalidades máis recentes, as actualizacións de seguranza e a asistencia técnica.
Nota
Esta no es la versión más reciente de este artículo. Para la versión actual, consulte la versión de .NET 9 de este artículo.
Aviso
Esta versión de ASP.NET Core ya no se admite. Para obtener más información, consulte la directiva de compatibilidad de .NET y .NET Core. Para la versión actual, consulte la versión de .NET 9 de este artículo.
Importante
Esta información hace referencia a un producto en versión preliminar, el cual puede sufrir importantes modificaciones antes de que se publique la versión comercial. Microsoft no proporciona ninguna garantía, expresa o implícita, con respecto a la información proporcionada aquí.
Para la versión actual, consulte la versión de .NET 9 de este artículo.
Por David Acker
El nuevo Middleware de descompresión de solicitudes:
Content-Encoding
para identificar y descomprimir automáticamente las solicitudes que contienen contenido comprimido.Cuando el valor del encabezado Content-Encoding
en una solicitud coincide con uno de los proveedores de descompresión disponibles, el middleware:
Content-Encoding
, lo que indica que el cuerpo de la solicitud ya no está comprimido.El middleware de descompresión de la solicitud omite las solicitudes que no incluyen un encabezado Content-Encoding
.
Descompresión:
Content-Encoding
especificado, se produce una excepción. Brotli puede devolver System.InvalidOperationException: Decoder ran into invalid data. Deflate y GZip pueden devolver System.IO.InvalidDataException: The archive entry was compressed using an unsupported compression method.Si el middleware encuentra una solicitud con contenido comprimido pero no puede descomprimirla, la solicitud se pasa al siguiente delegado de la canalización. Por ejemplo, una solicitud con un valor de encabezado de Content-Encoding
no admitido o varios valores de encabezado de Content-Encoding
, se pasa al siguiente delegado de la canalización.
El siguiente código usa AddRequestDecompression(IServiceCollection) y UseRequestDecompression para habilitar la descompresión de solicitudes para los tipos Content-Encoding
predeterminados:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRequestDecompression();
var app = builder.Build();
app.UseRequestDecompression();
app.MapPost("/", (HttpRequest request) => Results.Stream(request.Body));
app.Run();
Los valores de encabezado Content-Encoding
que admite el middleware de descompresión de solicitudes de forma predeterminada se muestran en la tabla siguiente:
Content-Encoding valores de encabezado |
Descripción |
---|---|
br |
Formato de datos comprimidos de Brotli |
deflate |
Formato de datos comprimidos DEFLATE |
gzip |
Formato de archivo Gzip |
Se puede agregar compatibilidad con codificaciones personalizadas mediante la creación de clases de proveedor de descompresión personalizadas que implementan IDecompressionProvider:
public class CustomDecompressionProvider : IDecompressionProvider
{
public Stream GetDecompressionStream(Stream stream)
{
// Perform custom decompression logic here
return stream;
}
}
Los proveedores de descompresión personalizados se registran junto con RequestDecompressionOptions sus valores de encabezado correspondientes Content-Encoding
:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRequestDecompression(options =>
{
options.DecompressionProviders.Add("custom", new CustomDecompressionProvider());
});
var app = builder.Build();
app.UseRequestDecompression();
app.MapPost("/", (HttpRequest request) => Results.Stream(request.Body));
app.Run();
Para protegerte contra bombas zip o bombas de descompresión:
En orden de precedencia, el tamaño máximo de la solicitud para un punto de conexión se establece mediante:
MaxRequestBodySize
se puede invalidar por solicitud con IHttpMaxRequestBodySizeFeature.MaxRequestBodySize, pero el valor predeterminado es el límite configurado para la implementación del servidor web.Implementación del servidor web | Configuración de MaxRequestBodySize |
---|---|
HTTP.sys | HttpSysOptions.MaxRequestBodySize |
IIS | IISServerOptions.MaxRequestBodySize |
Kestrel | KestrelServerLimits.MaxRequestBodySize |
Aviso
Deshabilitar el límite de tamaño del cuerpo de la solicitud supone un riesgo de seguridad en lo que respecta al consumo de recursos no controlado, especialmente si el cuerpo de la solicitud se almacena en búfer. Asegúrese de que se aplican medidas de seguridad para mitigar el riesgo de ataques por denegación de servicio (DoS).
Comentarios de ASP.NET Core
ASP.NET Core é un proxecto de código aberto. Selecciona unha ligazón para ofrecer comentarios:
Evento
Campionato do Mundo de Power BI DataViz
Feb 14, 4 PM - Mar 31, 4 PM
Con 4 posibilidades de entrar, poderías gañar un paquete de conferencias e facelo ao Live Grand Finale en Las Vegas
Máis información