From e13a77fe3055ec309d510a2cef4e2dfa4d4e5828 Mon Sep 17 00:00:00 2001 From: "821644@qq.com" <821644@qq.com> Date: Mon, 13 Apr 2026 21:22:11 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DIIS=E9=83=A8=E7=BD=B2?= =?UTF-8?q?=E9=97=AE=E9=A2=98=EF=BC=9A=201.=20LoggingMiddleware=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=EF=BC=9A=E5=A4=84=E7=90=86=E5=B7=B2=E5=85=B3=E9=97=AD?= =?UTF-8?q?=E7=9A=84Stream=EF=BC=8C=E9=98=B2=E6=AD=A2ObjectDisposedExcepti?= =?UTF-8?q?on=202.=20Startup.cs=E6=B7=BB=E5=8A=A0UseStaticFiles=E4=B8=AD?= =?UTF-8?q?=E9=97=B4=E4=BB=B6=EF=BC=9A=E6=94=AF=E6=8C=81=E9=9D=99=E6=80=81?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E8=AE=BF=E9=97=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Haoliang.Api/Middleware/LoggingMiddleware.cs | 24 ++++++++++++++------ Haoliang.Api/Startup.cs | 1 + 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/Haoliang.Api/Middleware/LoggingMiddleware.cs b/Haoliang.Api/Middleware/LoggingMiddleware.cs index 540c275..ad573c2 100644 --- a/Haoliang.Api/Middleware/LoggingMiddleware.cs +++ b/Haoliang.Api/Middleware/LoggingMiddleware.cs @@ -25,6 +25,7 @@ namespace Haoliang.Api.Middleware public async Task Invoke(HttpContext context) { var originalBodyStream = context.Response.Body; + MemoryStream? responseBody = null; try { @@ -32,16 +33,17 @@ namespace Haoliang.Api.Middleware await LogRequestAsync(context); // Capture response - using (var responseBody = new MemoryStream()) - { - context.Response.Body = responseBody; + responseBody = new MemoryStream(); + context.Response.Body = responseBody; - await _next(context); + await _next(context); - // Log response - await LogResponseAsync(context, responseBody); + // Log response + await LogResponseAsync(context, responseBody); - // Copy the response body to the original stream + // Copy the response body to the original stream + if (context.Response.ContentLength > 0) + { responseBody.Seek(0, SeekOrigin.Begin); await responseBody.CopyToAsync(originalBodyStream); } @@ -51,6 +53,14 @@ namespace Haoliang.Api.Middleware await _loggingService.LogErrorAsync($"Unhandled exception in logging middleware: {ex.Message}", ex); throw; } + finally + { + if (responseBody != null) + { + await responseBody.DisposeAsync(); + } + context.Response.Body = originalBodyStream; + } } private async Task LogRequestAsync(HttpContext context) diff --git a/Haoliang.Api/Startup.cs b/Haoliang.Api/Startup.cs index d2b57ad..f322201 100644 --- a/Haoliang.Api/Startup.cs +++ b/Haoliang.Api/Startup.cs @@ -66,6 +66,7 @@ namespace Haoliang.Api } // 中间件顺序很重要 + app.UseStaticFiles(); app.UseMiddleware(); app.UseCors("AllowAll"); app.UseMiddleware();