Могу ли я зарегистрировать ответ на запрос в базе данных в промежуточном программном обеспечении ядра 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. Кто-нибудь может мне помочь??