我可以在Asp.net核心中间件的数据库中记录请求响应吗?

时间:2018-04-12 19:51:42

标签: asp.net asp.net-core asp.net-core-2.0 nlog asp.net-core-middleware

我正在创建一个用于记录请求和响应的中间件,因为我是这个新手,它不清楚如何实现它。当我查看一些例子时,我写了以下内容

q = 0;
for i = 1:64
    for j = 1:64
        if fmu2(i,j) ~= 0;
            q = q +1;
        end
    end
end

for i = 1:64
    for j = 1:64
        mv = (1/q).*sum(fmu2(i,j));
    end
end

我找到了下面的例子,这是记录整个请求和响应,但我需要记录一些属性,我需要在数据库中记录它。

public RequestResponseLogging(RequestDelegate next, ILogger<RequestResponseLogging> logger)
        {
            if (next == null) throw new ArgumentNullException(nameof(next));
            _next = next;
            _logger = logger;
        }

我试过这样的事情:

public async Task Invoke(HttpContext context)
        {
           _logger.LogInformation(await FormatRequest(context.Request));
            var originalBodyStream = context.Response.Body;

            using (var responseBody = new MemoryStream())
            {
                context.Response.Body = responseBody;

                await _next(context);

                _logger.LogInformation(await FormatResponse(context.Response));
                await responseBody.CopyToAsync(originalBodyStream);

            }
        }

不确定这是否正确,我是否需要在我的中间件中添加EF?我在nlog中看到的所有示例都要求在启动文件中配置它,但是因为我需要在Middleware中实现它我没有任何启动文件它的类库项目不是API,从API我称之为中间件。 任何人都可以帮助我吗?

0 个答案:

没有答案