From 363bd5d6fea1fd7a06479624d1255b11ebae8786 Mon Sep 17 00:00:00 2001 From: Bruno Oliveira Date: Fri, 10 Feb 2023 23:33:57 +0000 Subject: [PATCH] StatusCodePagesMiddleware: Improving response verification --- .../StatusCodePage/StatusCodePagesOptions.cs | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) 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); }; }