C# 中间件的Net内核顺序

C# 中间件的Net内核顺序,c#,asp.net-core,C#,Asp.net Core,我目前在API管道中有一些错误处理中间件。我将添加一个日志中间件。目标是记录所有传入请求和传出响应,以及记录发生的任何错误 这是可能的吗?在startup.cs中,日志中间件是否在错误处理之前运行?反之亦然?是的,这都是可能的。您可以在传入请求通过管道传递之前将其记录在中间件中,并在通过管道返回时记录传出响应。要记录错误,请将中间件对next的调用包装为try/catch,记录异常,然后重试以让错误处理中间件拾取它 下面是一个大概的例子,说明了它可能是什么样子: app.UseErrorHand

我目前在API管道中有一些错误处理中间件。我将添加一个日志中间件。目标是记录所有传入请求和传出响应,以及记录发生的任何错误


这是可能的吗?在startup.cs中,日志中间件是否在错误处理之前运行?反之亦然?

是的,这都是可能的。您可以在传入请求通过管道传递之前将其记录在中间件中,并在通过管道返回时记录传出响应。要记录错误,请将中间件对
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();
日志中间件跟踪错误处理程序,以便它可以在错误处理程序启动之前(在通过管道返回的过程中)进行日志记录。如果要在错误处理程序之前添加日志记录中间件,则在中间件看到异常时,该异常已经转换为响应