add: hci
This commit is contained in:
51
Middleware/RequestBodyLoggingMiddleware.cs
Normal file
51
Middleware/RequestBodyLoggingMiddleware.cs
Normal file
@@ -0,0 +1,51 @@
|
||||
using System.Text;
|
||||
|
||||
namespace Alchegos.MCP.Middleware
|
||||
{
|
||||
|
||||
public class RequestBodyLoggingMiddleware
|
||||
{
|
||||
private readonly RequestDelegate _next;
|
||||
private readonly ILogger _logger;
|
||||
public RequestBodyLoggingMiddleware(RequestDelegate next, ILogger<RequestBodyLoggingMiddleware> logger)
|
||||
{
|
||||
_next = next;
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
public async Task InvokeAsync(HttpContext context)
|
||||
{
|
||||
if (context.Request.Method == HttpMethods.Post && context.Request.ContentLength > 0)
|
||||
{
|
||||
context.Request.EnableBuffering();
|
||||
|
||||
using var reader = new StreamReader(
|
||||
context.Request.Body,
|
||||
encoding: Encoding.UTF8,
|
||||
detectEncodingFromByteOrderMarks: false,
|
||||
bufferSize: 4096,
|
||||
leaveOpen: true);
|
||||
|
||||
var requestBody = await reader.ReadToEndAsync();
|
||||
context.Request.Body.Position = 0;
|
||||
|
||||
_logger.LogTrace("Request Body (POST {RequestPath}):\n{RequestBody}", context.Request.Path, requestBody);
|
||||
|
||||
}
|
||||
|
||||
await _next(context);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
namespace Microsoft.AspNetCore.Builder
|
||||
{
|
||||
public static class RequestBodyLoggingMiddlewareExtensions
|
||||
{
|
||||
public static IApplicationBuilder UseRequestBodyLogging(
|
||||
this IApplicationBuilder builder)
|
||||
{
|
||||
return builder.UseMiddleware<Alchegos.MCP.Middleware.RequestBodyLoggingMiddleware>();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user