# ASP.NET Core : supporter le contenu compressé

> Dans l’article précédent, nous avions vu comment activer la compression des réponses, dans cet article nous allons voir comment accepter des requêtes dont le…

- Auteur: Jérôme Giacomini
- Langue: fr
- URL canonique: [ASP.NET Core : supporter le contenu compressé](https://jeromegiacomini.net/fr/articles/2018/09/25/asp-net-core-supporter-le-contenu-compresse)
- Publié le: 2018-09-25
- Dernière modification: 2026-09-05
- Thèmes: ASP.NET Core, .NET, C#

[Dans l’article précédent,](https://jeromegiacomini.net/Blog/2018/09/25/asp-net-core-activer-la-compression-des-reponse-en-gzip-deflate-brotli/) nous avions vu comment activer la compression des réponses, dans cet article nous allons voir comment accepter des requêtes dont le contenu est compressé.

ASP.Net Core ne fournit aucune classe built-in pour supporter ce scénario. Mais heureusement celui-ci est assez flexible pour ajouter ce comportement en quelques lignes.

L’idée est décompresser le body des requêtes qui ont comme entête **Content-Encoding** avec les valeurs **gzip**, **deflate** ou **br**.

```csharp

    public class CompressionMiddleware
    {
        private readonly RequestDelegate _next;

        public CompressionMiddleware(RequestDelegate next)
        {
            _next = next;
        }

        public async Task InvokeAsync(HttpContext context)
        {
            // Récupération de l'entête Content-Encoding.
            var content = context.Request.Headers["Content-Encoding"];
            if (!string.IsNullOrWhiteSpace(content) &amp;&amp; context.Request.Body != null)
            {
                if (content.Contains("gzip"))
                {
                    // On remplace le stream par un stream Gzip
                    context.Request.Body = new GZipStream(context.Request.Body, CompressionMode.Decompress);
                }
                else if (content.Contains("br"))
                {
                    // On remplace le stream par un stream Brotli
                    context.Request.Body = new BrotliStream(context.Request.Body, CompressionMode.Decompress);
                }
                else if (content.Contains("deflate"))
                {
                    // On remplace le stream par un stream deflate
                    context.Request.Body = new DeflateStream(context.Request.Body, CompressionMode.Decompress);
                }
            }

            await _next(context);
        }
    }
```


Une fois le middleware défini, il faut l’ajouter dans la méthode **Configure** de la classe **Startup**

```csharp

            app.UseMiddleware&lt;CompressionMiddleware&gt;();
```


Happy coding !
