I'm looking to encode HTTP responses on the fly using .NET Core and the Kestrel web server. The following code does not work, the response fails to load in the browser.
var response = context.Response;
if (encodingsAccepted.ToArray().Any(x => x.Contains("gzip")))
{
// Set Gzip stream.
context.Response.Headers.Add("Content-Encoding", "gzip");
// Wrap response body in Gzip stream.
var body = context.Response.Body;
context.Response.Body = new GZipStream(body, CompressionMode.Compress);
}
The detailed description about response compression is available here: https://learn.microsoft.com/en-us/aspnet/core/performance/response-compression
A quick summary
Compression can be enabled in 2 steps:
Microsoft.AspNetCore.ResponseCompression
package.Enable compression on the application startup:
public void ConfigureServices(IServiceCollection services)
{
services.AddResponseCompression();
}
public void Configure(IApplicationBuilder app)
{
app.UseResponseCompression();
...
}
That's it. Now the response will be compressed in case if the client accepts compression encoding.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With