diff --git a/src/Microsoft.AspNetCore.ResponseCompression/ResponseCompressionProvider.cs b/src/Microsoft.AspNetCore.ResponseCompression/ResponseCompressionProvider.cs index 3ed2dd058a..33b234091e 100644 --- a/src/Microsoft.AspNetCore.ResponseCompression/ResponseCompressionProvider.cs +++ b/src/Microsoft.AspNetCore.ResponseCompression/ResponseCompressionProvider.cs @@ -155,6 +155,11 @@ namespace Microsoft.AspNetCore.ResponseCompression return false; } + if (context.Response.Headers.ContainsKey(HeaderNames.ContentEncoding)) + { + return false; + } + var mimeType = context.Response.ContentType; if (string.IsNullOrEmpty(mimeType)) diff --git a/test/Microsoft.AspNetCore.ResponseCompression.Tests/ResponseCompressionMiddlewareTest.cs b/test/Microsoft.AspNetCore.ResponseCompression.Tests/ResponseCompressionMiddlewareTest.cs index 5a2a17a53c..7340aeeac7 100644 --- a/test/Microsoft.AspNetCore.ResponseCompression.Tests/ResponseCompressionMiddlewareTest.cs +++ b/test/Microsoft.AspNetCore.ResponseCompression.Tests/ResponseCompressionMiddlewareTest.cs @@ -321,8 +321,9 @@ namespace Microsoft.AspNetCore.ResponseCompression.Tests CheckResponseNotCompressed(response, expectedBodyLength: 50, sendVaryHeader: false); } + [Fact] - public async Task Response_WithContentEncodingAlreadySet_Stacked() + public async Task Response_WithContentEncodingAlreadySet_NotReCompressed() { var otherContentEncoding = "something"; @@ -332,8 +333,8 @@ namespace Microsoft.AspNetCore.ResponseCompression.Tests }); Assert.True(response.Content.Headers.ContentEncoding.Contains(otherContentEncoding)); - Assert.True(response.Content.Headers.ContentEncoding.Contains("gzip")); - Assert.Equal(24, response.Content.Headers.ContentLength); + Assert.False(response.Content.Headers.ContentEncoding.Contains("gzip")); + Assert.Equal(50, response.Content.Headers.ContentLength); } [Theory]