DEV Community

Cesar Aguirre
Cesar Aguirre

Posted on • Updated on • Originally published at canro91.github.io

How to add gzip compression to ASP.NET Core API responses

I originally posted an extended version of this post on my blog.

To compress responses with ASP.NET Core, register the default compression providers into the dependencies container with the UseResponseCompression() method.

Something like this,

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
builder.Services.AddResponseCompression(); // 👈

var app = builder.Build();
app.UseResponseCompression(); // 👈
app.MapControllers();
app.Run();
Enter fullscreen mode Exit fullscreen mode

If we don't specify any compression provider, ASP.NET Core uses a default one.

If we want gzip compression, then let's register the GzipCompressionProvider inside AddResponseCompression() and set its compression level by configuring the GzipCompressionProviderOptions,

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();

builder.Services.AddResponseCompression(options =>
{
    options.Providers.Add<GzipCompressionProvider>(); // 👈
});

builder.services.Configure<GzipCompressionProviderOptions>(options => 
{
    options.Level = CompressionLevel.Fastest; // 👈
});

var app = builder.Build();
app.UseResponseCompression(); // 👈
app.MapControllers();
app.Run();
Enter fullscreen mode Exit fullscreen mode

In previous versions of ASP.NET Core, we needed the Microsoft.AspNetCore.ResponseCompression NuGet package. It's deprecated now. ASP.NET Core has response compression built in now. We don't need NuGet packages for this.

But if you're still using ASP.NET Core 2.x, here you go,

public void ConfigureServices(IServiceCollection services)
{
    services.Configure<GzipCompressionProviderOptions>(options => 
    {
        options.Level = CompressionLevel.Fastest;
    });
    services.AddResponseCompression(options =>
    {
        options.Providers.Add<GzipCompressionProvider>();
    });
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.UseResponseCompression();
}
Enter fullscreen mode Exit fullscreen mode

Source: Response compression in ASP.NET Core


Hey, there! I'm Cesar, a software engineer and lifelong learner. To support my work, visit my Gumroad page to download my ebooks, check my courses, or buy me a coffee.

Happy coding!

Oldest comments (0)