Я работаю над проектом ASP.Net Core Web API и хочу регистрировать все запросы и 500 ошибок сервера.
Я использовал специальное промежуточное программное обеспечение для регистрации запросов, и оно определяется при запуске.cs as:
app.UseMiddleware<logMiddleware>();
Я также определил обработчик исключений для захвата ошибок сервера в файле startup.cs:
app.UseExceptionHandler(builder => {
builder.Run(async context => {
context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
var error = context.Features.Get<IExceptionHandlerFeature>();
if (error != null) {
logService logger = new logService(conf);
await logger.logError(error, context);
}
});
});
Я сохраняю информацию о запросах в журналах ошибок, поэтому я неМне нужно сохранить журнал запросов, когда код ответа равен 500, поэтому я добавил проверку в функцию журнала запросов, чтобы отфильтровать ошибки:
public async Task logRequestAsync(HttpContext context) {
if (context.Response.StatusCode != 500) {
//do things
}
}
Проблема заключается в том, что Response.StatusCode возвращает значение 200 вместо 500.Вероятно, он запускается до завершения функции вызова API, и ошибка сервера происходит позже во время выполнения.
Есть ли способ переместить процесс «Журнал запросов» в точку, где создается ответ, а не началозапроса API?