diff --git a/BMA.EHR.Domain/Middlewares/RequestLoggingMiddleware.cs b/BMA.EHR.Domain/Middlewares/RequestLoggingMiddleware.cs index 2831d2f5..731bfdcb 100644 --- a/BMA.EHR.Domain/Middlewares/RequestLoggingMiddleware.cs +++ b/BMA.EHR.Domain/Middlewares/RequestLoggingMiddleware.cs @@ -94,7 +94,7 @@ namespace BMA.EHR.Domain.Middlewares string requestBody = await ReadRequestBodyAsync(context); if (requestBody != "") { - if(context.Request.HasFormContentType) + if (context.Request.HasFormContentType) { var form = await context.Request.ReadFormAsync(); // อ่าน form-data @@ -128,8 +128,8 @@ namespace BMA.EHR.Domain.Middlewares requestBodyJson = JsonSerializer.Serialize(JsonSerializer.Deserialize(requestBody), new JsonSerializerOptions { Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping, WriteIndented = true, Converters = { new DateTimeFixConverter() } }); } } - - + + var originalBodyStream = context.Response.Body; @@ -150,6 +150,17 @@ namespace BMA.EHR.Domain.Middlewares await _next(context); // ดำเนินการต่อไปยัง Middleware อื่น ๆ stopwatch.Stop(); + + + var contentType = context.Response.ContentType; + + var isFileResponse = contentType != null && ( + contentType.StartsWith("application/") || + contentType.StartsWith("image/") || + contentType.StartsWith("audio/") || + context.Response.Headers.ContainsKey("Content-Disposition") + ); + var processTime = stopwatch.ElapsedMilliseconds; var endTime = DateTime.UtcNow; @@ -166,12 +177,29 @@ namespace BMA.EHR.Domain.Middlewares memoryStream.Seek(0, SeekOrigin.Begin); var responseBody = new StreamReader(memoryStream).ReadToEnd(); if (responseBody != "") - responseBodyJson = JsonSerializer.Serialize(JsonSerializer.Deserialize(responseBody), new JsonSerializerOptions { Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping, WriteIndented = true, Converters = { new DateTimeFixConverter() } }); - - var json = JsonSerializer.Deserialize(responseBody); - if (json.TryGetProperty("message", out var messageElement)) { - message = messageElement.GetString(); + if (isFileResponse) + { + responseBodyJson = ""; + message = "success"; + } + else + { + responseBodyJson = JsonSerializer.Serialize(JsonSerializer.Deserialize(responseBody), new JsonSerializerOptions { Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping, WriteIndented = true, Converters = { new DateTimeFixConverter() } }); + + var json = JsonSerializer.Deserialize(responseBody); + if (json.ValueKind == JsonValueKind.Array) + { + message = "success"; + } + else + { + if (json.TryGetProperty("message", out var messageElement)) + { + message = messageElement.GetString(); + } + } + } } var logData = new