0
들어오는 요청을 메소드, 경로, 본문 및 기타 정보로 기록하고 싶습니다. 내 문제는 로깅 후 컨트롤러가 메소드 매개 변수로 null 변수 만 가져 오는 것입니다. 나는 그물 코어 1.1을 사용하고, IIoggerFactory, Serilog 확장, 다음과 같은 미들웨어 방법 :asp.net 코어 mvc 로그 요청 본문
public async Task Invoke(HttpContext context)
{
StringValues sessionId;
var session = string.Empty;
if (context.Request.Headers.TryGetValue("X-SessionID", out sessionId))
{
session = sessionId.FirstOrDefault();
if (session != null)
{
var requestBodyStream = new MemoryStream();
var originalRequestBody = context.Request.Body;
await context.Request.Body.CopyToAsync(requestBodyStream);
requestBodyStream.Seek(0, SeekOrigin.Begin);
var url = UriHelper.GetDisplayUrl(context.Request);
var requestBodyText = new StreamReader(requestBodyStream).ReadToEnd();
_logger.LogDebug($"{session} {context.Request.Method} {url} {requestBodyText}");
requestBodyStream.Seek(0, SeekOrigin.Begin);
context.Request.Body = requestBodyStream;
await _next(context);
context.Request.Body = originalRequestBody;
}
}
await _next(context);
}
어떻게 요청을 기록하고 미들웨어 후 컨트롤러의 요청 본문을 유지할 수 있습니다?
이 질문에 살펴 보자 https://stackoverflow.com/questions/44498802/asp-net-core-modify-substitute-a-request-body – jmunoa7
@ jmunoa7 감사합니다, 내 문제 나는 그 방법의 끝에서 다른 것을 남겼다. – Perrier