Чистый основной порядок промежуточного программного обеспечения - PullRequest
1 голос
/ 20 июня 2019

В настоящее время у меня есть некоторое промежуточное программное обеспечение для обработки ошибок в моем конвейере API.Я собираюсь добавить промежуточное программное обеспечение для регистрации.Цель состоит в том, чтобы регистрировать все входящие запросы и исходящие ответы, а также регистрировать любые возникающие ошибки.

Возможно ли это, и в файле startup.cs промежуточное программное обеспечение для ведения журналов перед обработкой ошибок или наоборот?

1 Ответ

1 голос
/ 20 июня 2019

Да, это все возможно.Вы можете зарегистрировать входящий запрос в промежуточном программном обеспечении до того, как он будет передан по конвейеру, и записать исходящий ответ, когда он возвращается через конвейер.Чтобы зарегистрировать ошибки, оберните вызов промежуточного программного обеспечения в next с помощью try / catch, зарегистрируйте исключение и затем сбросьте его, чтобы промежуточное программное обеспечение для обработки ошибок подняло его.

Вот грубый примеркак это могло бы выглядеть:

app.UseErrorHandler("/Home/Error");

app.Use(async (ctx, next) =>
{
    try
    {
        // Log the incoming request.
        await next();
        // Log the outgoing response.
    }
    catch (Exception ex)
    {
        // Log the exception.
        throw; // Rethrow. The error-handler will pick this up.
    }
});

// e.g.
app.UseMvc();

Ваше промежуточное программное обеспечение для журналирования идет после обработчика ошибок, так что он может регистрироваться до того, как обработчик ошибок активируется (на обратном пути черезтрубопровод).Если бы вы добавили промежуточное программное обеспечение для ведения журналов до обработчика ошибок, исключение уже было бы преобразовано в ответ к тому моменту, когда ваше промежуточное программное обеспечение увидит его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...