Промежуточное ПО журнала получает 200 кодов ответов, тогда как на самом деле это 500 - PullRequest
0 голосов
/ 02 мая 2019

Я работаю над проектом 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?

...