Могу ли я зарегистрировать ответ на запрос в базе данных в промежуточном программном обеспечении ядра Asp.net?

Я создаю промежуточное программное обеспечение для регистрации запросов и ответов, так как я новичок в этом, не ясно, как его реализовать. Когда я проверил несколько примеров, я написал следующее

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);

            }
        }

Я попробовал что-то вроде этого:

RequestData requestData = new RequestData();
            requestData.UserName = context.Request.Headers[UserKey];
            requestData.Token = context.Request.Headers[TokenKey];

            _logger.LogInformation("Request",requestData);

            await _next(context);

            ResponseData responseData = new ResponseData();
            responseData.Code = context.Response.Headers["Code"];
            responseData.Descirption = context.Response.Headers["Desciption"];
            _logger.LogInformation("Response", responseData);

не уверен, что это правильный путь, мне нужно добавить EF в свое промежуточное ПО? Все примеры, которые я видел для nlog, просят настроить его в файле запуска, но так как мне нужно реализовать его в Middleware, у меня нет файла запуска, это проект библиотеки классов, а не API, из API я называю свое Middleware. Кто-нибудь может мне помочь??

0 ответов

Другие вопросы по тегам