diff --git a/src/Middleware/Diagnostics/src/StatusCodePage/StatusCodePagesOptions.cs b/src/Middleware/Diagnostics/src/StatusCodePage/StatusCodePagesOptions.cs index 496e02d763e3..3fc87f08cb5f 100644 --- a/src/Middleware/Diagnostics/src/StatusCodePage/StatusCodePagesOptions.cs +++ b/src/Middleware/Diagnostics/src/StatusCodePage/StatusCodePagesOptions.cs @@ -26,21 +26,26 @@ public StatusCodePagesOptions() if (context.HttpContext.RequestServices.GetService() is { } problemDetailsService) { - await problemDetailsService.WriteAsync(new () + await problemDetailsService.WriteAsync(new() { HttpContext = context.HttpContext, ProblemDetails = { Status = statusCode } }); } - // TODO: Render with a pre-compiled html razor view. - if (!context.HttpContext.Response.HasStarted) + // Do nothing if a response body has already been started. + if (context.HttpContext.Response.HasStarted + || context.HttpContext.Response.ContentLength.HasValue + || !string.IsNullOrEmpty(context.HttpContext.Response.ContentType)) { - var body = BuildResponseBody(statusCode); - - context.HttpContext.Response.ContentType = "text/plain"; - await context.HttpContext.Response.WriteAsync(body); + return; } + + // TODO: Render with a pre-compiled html razor view. + var body = BuildResponseBody(statusCode); + + context.HttpContext.Response.ContentType = "text/plain"; + await context.HttpContext.Response.WriteAsync(body); }; }