|
|
|
|
@ -25,6 +25,7 @@ namespace Haoliang.Api.Middleware
|
|
|
|
|
public async Task Invoke(HttpContext context)
|
|
|
|
|
{
|
|
|
|
|
var originalBodyStream = context.Response.Body;
|
|
|
|
|
MemoryStream? responseBody = null;
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
@ -32,8 +33,7 @@ namespace Haoliang.Api.Middleware
|
|
|
|
|
await LogRequestAsync(context);
|
|
|
|
|
|
|
|
|
|
// Capture response
|
|
|
|
|
using (var responseBody = new MemoryStream())
|
|
|
|
|
{
|
|
|
|
|
responseBody = new MemoryStream();
|
|
|
|
|
context.Response.Body = responseBody;
|
|
|
|
|
|
|
|
|
|
await _next(context);
|
|
|
|
|
@ -42,6 +42,8 @@ namespace Haoliang.Api.Middleware
|
|
|
|
|
await LogResponseAsync(context, responseBody);
|
|
|
|
|
|
|
|
|
|
// 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)
|
|
|
|
|
|