diff --git a/src/JsonApiDotNetCore/Formatters/JsonApiWriter.cs b/src/JsonApiDotNetCore/Formatters/JsonApiWriter.cs index 61ae579320..e9f1c95f6f 100644 --- a/src/JsonApiDotNetCore/Formatters/JsonApiWriter.cs +++ b/src/JsonApiDotNetCore/Formatters/JsonApiWriter.cs @@ -77,9 +77,19 @@ private string SerializeResponse(object contextObject, HttpStatusCode statusCode throw new UnsuccessfulActionResultException(problemDetails); } - if (contextObject == null && !IsSuccessStatusCode(statusCode)) + if (contextObject == null) { - throw new UnsuccessfulActionResultException(statusCode); + if (!IsSuccessStatusCode(statusCode)) + { + throw new UnsuccessfulActionResultException(statusCode); + } + + if (statusCode == HttpStatusCode.NoContent || statusCode == HttpStatusCode.ResetContent || + statusCode == HttpStatusCode.NotModified) + { + // Prevent exception from Kestrel server, caused by writing data:null json response. + return null; + } } contextObject = WrapErrors(contextObject); diff --git a/test/NoEntityFrameworkTests/WorkItemTests.cs b/test/NoEntityFrameworkTests/WorkItemTests.cs index c4f687c383..2bb2edc35f 100644 --- a/test/NoEntityFrameworkTests/WorkItemTests.cs +++ b/test/NoEntityFrameworkTests/WorkItemTests.cs @@ -146,7 +146,7 @@ await ExecuteOnDbContextAsync(async dbContext => string responseBody = await response.Content.ReadAsStringAsync(); var document = JsonConvert.DeserializeObject(responseBody); - Assert.Null(document.Data); + Assert.Null(document); } private async Task ExecuteOnDbContextAsync(Func asyncAction)