Skip to content

Commit 01de355

Browse files
authored
Don't set StatusCode in WriteAsJsonAsync (#23583)
1 parent 7f6147d commit 01de355

File tree

2 files changed

+34
-2
lines changed

2 files changed

+34
-2
lines changed

src/Http/Http.Extensions/src/HttpResponseJsonExtensions.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,6 @@ public static Task WriteAsJsonAsync<TValue>(
7777
options ??= ResolveSerializerOptions(response.HttpContext);
7878

7979
response.ContentType = contentType ?? JsonConstants.JsonContentTypeWithCharset;
80-
response.StatusCode = StatusCodes.Status200OK;
8180
return JsonSerializer.SerializeAsync<TValue>(response.Body, value!, options, cancellationToken);
8281
}
8382

@@ -150,7 +149,6 @@ public static Task WriteAsJsonAsync(
150149
options ??= ResolveSerializerOptions(response.HttpContext);
151150

152151
response.ContentType = contentType ?? JsonConstants.JsonContentTypeWithCharset;
153-
response.StatusCode = StatusCodes.Status200OK;
154152
return JsonSerializer.SerializeAsync(response.Body, value, type, options, cancellationToken);
155153
}
156154

src/Http/Http.Extensions/test/HttpResponseJsonExtensionsTests.cs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,23 @@ public override void Write(Utf8JsonWriter writer, int value, JsonSerializerOptio
8888
}
8989
}
9090

91+
[Fact]
92+
public async Task WriteAsJsonAsyncGeneric_CustomStatusCode_StatusCodeUnchanged()
93+
{
94+
// Arrange
95+
var body = new MemoryStream();
96+
var context = new DefaultHttpContext();
97+
context.Response.Body = body;
98+
99+
// Act
100+
context.Response.StatusCode = StatusCodes.Status418ImATeapot;
101+
await context.Response.WriteAsJsonAsync(1);
102+
103+
// Assert
104+
Assert.Equal(JsonConstants.JsonContentTypeWithCharset, context.Response.ContentType);
105+
Assert.Equal(StatusCodes.Status418ImATeapot, context.Response.StatusCode);
106+
}
107+
91108
[Fact]
92109
public async Task WriteAsJsonAsyncGeneric_WithContentType_JsonResponseWithCustomContentType()
93110
{
@@ -223,6 +240,23 @@ public async Task WriteAsJsonAsync_ObjectWithStrings_CamcelCaseAndNotEscaped()
223240
Assert.Equal(@"{""stringProperty"":""激光這兩個字是甚麼意思""}", data);
224241
}
225242

243+
[Fact]
244+
public async Task WriteAsJsonAsync_CustomStatusCode_StatusCodeUnchanged()
245+
{
246+
// Arrange
247+
var body = new MemoryStream();
248+
var context = new DefaultHttpContext();
249+
context.Response.Body = body;
250+
251+
// Act
252+
context.Response.StatusCode = StatusCodes.Status418ImATeapot;
253+
await context.Response.WriteAsJsonAsync(1, typeof(int));
254+
255+
// Assert
256+
Assert.Equal(JsonConstants.JsonContentTypeWithCharset, context.Response.ContentType);
257+
Assert.Equal(StatusCodes.Status418ImATeapot, context.Response.StatusCode);
258+
}
259+
226260
public class TestObject
227261
{
228262
public string? StringProperty { get; set; }

0 commit comments

Comments
 (0)