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();