From aa89639d629899985b27b4ad749f707efc8892cd Mon Sep 17 00:00:00 2001 From: Chirag Rupani <36813124+ChiragRupani@users.noreply.github.com> Date: Thu, 21 Mar 2019 01:45:42 +0530 Subject: [PATCH] Removed Content Type header for response when no content is being returned (#8557) Addresses #8230 --- .../Mvc.Core/src/Infrastructure/FileResultExecutorBase.cs | 8 ++++---- src/Mvc/Mvc.Core/test/FileContentResultTest.cs | 1 + src/Mvc/Mvc.Core/test/FileStreamResultTest.cs | 5 +++-- src/Mvc/Mvc.Core/test/PhysicalFileResultTest.cs | 1 + src/Mvc/Mvc.Core/test/VirtualFileResultTest.cs | 1 + 5 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/Mvc/Mvc.Core/src/Infrastructure/FileResultExecutorBase.cs b/src/Mvc/Mvc.Core/src/Infrastructure/FileResultExecutorBase.cs index 59fd3eb09c..48ad5f3ad9 100644 --- a/src/Mvc/Mvc.Core/src/Infrastructure/FileResultExecutorBase.cs +++ b/src/Mvc/Mvc.Core/src/Infrastructure/FileResultExecutorBase.cs @@ -52,10 +52,7 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure { throw new ArgumentNullException(nameof(result)); } - - SetContentType(context, result); - SetContentDispositionHeader(context, result); - + var request = context.HttpContext.Request; var httpRequestHeaders = request.GetTypedHeaders(); @@ -83,6 +80,9 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure return (range: null, rangeLength: 0, serveBody: false); } + SetContentType(context, result); + SetContentDispositionHeader(context, result); + if (fileLength.HasValue) { // Assuming the request is not a range request, and the response body is not empty, the Content-Length header is set to diff --git a/src/Mvc/Mvc.Core/test/FileContentResultTest.cs b/src/Mvc/Mvc.Core/test/FileContentResultTest.cs index 64337a02a0..3a14519944 100644 --- a/src/Mvc/Mvc.Core/test/FileContentResultTest.cs +++ b/src/Mvc/Mvc.Core/test/FileContentResultTest.cs @@ -444,6 +444,7 @@ namespace Microsoft.AspNetCore.Mvc var body = streamReader.ReadToEndAsync().Result; Assert.Equal(StatusCodes.Status304NotModified, httpResponse.StatusCode); Assert.Null(httpResponse.ContentLength); + Assert.False(httpResponse.Headers.ContainsKey(HeaderNames.ContentType)); Assert.Empty(httpResponse.Headers[HeaderNames.ContentRange]); Assert.NotEmpty(httpResponse.Headers[HeaderNames.LastModified]); Assert.Empty(body); diff --git a/src/Mvc/Mvc.Core/test/FileStreamResultTest.cs b/src/Mvc/Mvc.Core/test/FileStreamResultTest.cs index d879d65f6c..8152b2c44e 100644 --- a/src/Mvc/Mvc.Core/test/FileStreamResultTest.cs +++ b/src/Mvc/Mvc.Core/test/FileStreamResultTest.cs @@ -432,10 +432,11 @@ namespace Microsoft.AspNetCore.Mvc var httpResponse = actionContext.HttpContext.Response; httpResponse.Body.Seek(0, SeekOrigin.Begin); var streamReader = new StreamReader(httpResponse.Body); - var body = streamReader.ReadToEndAsync().Result; + var body = await streamReader.ReadToEndAsync(); Assert.Equal(StatusCodes.Status304NotModified, httpResponse.StatusCode); Assert.Null(httpResponse.ContentLength); - Assert.Empty(httpResponse.Headers[HeaderNames.ContentRange]); + Assert.Empty(httpResponse.Headers[HeaderNames.ContentRange]); + Assert.False(httpResponse.Headers.ContainsKey(HeaderNames.ContentType)); Assert.NotEmpty(httpResponse.Headers[HeaderNames.LastModified]); Assert.Empty(body); Assert.False(readStream.CanSeek); diff --git a/src/Mvc/Mvc.Core/test/PhysicalFileResultTest.cs b/src/Mvc/Mvc.Core/test/PhysicalFileResultTest.cs index 2788f186c7..9d172584a8 100644 --- a/src/Mvc/Mvc.Core/test/PhysicalFileResultTest.cs +++ b/src/Mvc/Mvc.Core/test/PhysicalFileResultTest.cs @@ -305,6 +305,7 @@ namespace Microsoft.AspNetCore.Mvc Assert.Null(httpResponse.ContentLength); Assert.Empty(httpResponse.Headers[HeaderNames.ContentRange]); Assert.NotEmpty(httpResponse.Headers[HeaderNames.LastModified]); + Assert.False(httpResponse.Headers.ContainsKey(HeaderNames.ContentType)); Assert.Empty(body); } diff --git a/src/Mvc/Mvc.Core/test/VirtualFileResultTest.cs b/src/Mvc/Mvc.Core/test/VirtualFileResultTest.cs index 7f7f6b78c1..9a78df302e 100644 --- a/src/Mvc/Mvc.Core/test/VirtualFileResultTest.cs +++ b/src/Mvc/Mvc.Core/test/VirtualFileResultTest.cs @@ -402,6 +402,7 @@ namespace Microsoft.AspNetCore.Mvc Assert.Null(httpResponse.ContentLength); Assert.Empty(httpResponse.Headers[HeaderNames.ContentRange]); Assert.NotEmpty(httpResponse.Headers[HeaderNames.LastModified]); + Assert.False(httpResponse.Headers.ContainsKey(HeaderNames.ContentType)); Assert.Empty(body); }