Don't set StatusCode in WriteAsJsonAsync (#23583)

This commit is contained in:
James Newton-King 2020-07-02 09:48:05 +12:00 committed by GitHub
parent 7f6147d50f
commit 01de355289
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 34 additions and 2 deletions

View File

@ -77,7 +77,6 @@ namespace Microsoft.AspNetCore.Http.Json
options ??= ResolveSerializerOptions(response.HttpContext);
response.ContentType = contentType ?? JsonConstants.JsonContentTypeWithCharset;
response.StatusCode = StatusCodes.Status200OK;
return JsonSerializer.SerializeAsync<TValue>(response.Body, value!, options, cancellationToken);
}
@ -150,7 +149,6 @@ namespace Microsoft.AspNetCore.Http.Json
options ??= ResolveSerializerOptions(response.HttpContext);
response.ContentType = contentType ?? JsonConstants.JsonContentTypeWithCharset;
response.StatusCode = StatusCodes.Status200OK;
return JsonSerializer.SerializeAsync(response.Body, value, type, options, cancellationToken);
}

View File

@ -88,6 +88,23 @@ namespace Microsoft.AspNetCore.Http.Extensions.Tests
}
}
[Fact]
public async Task WriteAsJsonAsyncGeneric_CustomStatusCode_StatusCodeUnchanged()
{
// Arrange
var body = new MemoryStream();
var context = new DefaultHttpContext();
context.Response.Body = body;
// Act
context.Response.StatusCode = StatusCodes.Status418ImATeapot;
await context.Response.WriteAsJsonAsync(1);
// Assert
Assert.Equal(JsonConstants.JsonContentTypeWithCharset, context.Response.ContentType);
Assert.Equal(StatusCodes.Status418ImATeapot, context.Response.StatusCode);
}
[Fact]
public async Task WriteAsJsonAsyncGeneric_WithContentType_JsonResponseWithCustomContentType()
{
@ -223,6 +240,23 @@ namespace Microsoft.AspNetCore.Http.Extensions.Tests
Assert.Equal(@"{""stringProperty"":""激光這兩個字是甚麼意思""}", data);
}
[Fact]
public async Task WriteAsJsonAsync_CustomStatusCode_StatusCodeUnchanged()
{
// Arrange
var body = new MemoryStream();
var context = new DefaultHttpContext();
context.Response.Body = body;
// Act
context.Response.StatusCode = StatusCodes.Status418ImATeapot;
await context.Response.WriteAsJsonAsync(1, typeof(int));
// Assert
Assert.Equal(JsonConstants.JsonContentTypeWithCharset, context.Response.ContentType);
Assert.Equal(StatusCodes.Status418ImATeapot, context.Response.StatusCode);
}
public class TestObject
{
public string? StringProperty { get; set; }