【发布时间】:2019-12-18 08:03:27
【问题描述】:
我正在写一个中间件来写api请求日志。
但有时响应日志会被写入两次。这是一个代码示例:
public class TestLoggingMiddleware
{
private readonly RequestDelegate _next;
private readonly ILogger _logger;
private int After = 0;
private int Before = 0;
public TestLoggingMiddleware(RequestDelegate next, ILoggerFactory logfac)
{
_logger = logfac.CreateLogger("ApiRequest");
_next = next;
}
public async Task Invoke(HttpContext context)
{
Before = 0;
After = 0;
Before++;
await _next(context);
After++;
After++;
if (After > 2)
{
_logger.LogError($"{context.Request.Path.ToString()}_{Before}_{After}");
}
}
}
之前=1,之后=4。这个问题只是偶尔出现。
netcore 版本是 3.1 。 代码在 docker 中运行。
有人知道问题出在哪里吗?
【问题讨论】:
-
问题可能是缺少线程同步。
标签: c# asp.net .net asp.net-core async-await