中间件的净核心顺序

时间:2019-06-20 18:22:26

标签: c# asp.net-core

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

这是可能的吗,并且在startup.cs中,日志记录中间件是否在错误处理之前发生?反之亦然?

1 个答案:

答案 0 :(得分:1)

是的,这都是可能的。您可以将传入请求记录在中间件中,然后再将其通过管道传递,并记录传出响应(通过管道返回)。要记录错误,请用// What our controller looks like: var maxLengthOfStrings = _db.Model .FindEntityType(typeof(Validation)) .GetProperties() .Where(p => p.ClrType == typeof(string)) .ToDictionary(prop => prop.Name, prop => new { MaxLegnth = prop.GetMaxLength(), // The part that is saying required doesn't exist // in the context IsRequired = prop.IsRequired() }); // What our db context file looks like: modelBuilder.Entity<DeploymentEnvironment>(entity => { entity.HasKey(e => e.Code); entity.Property(e => e.Code) .HasMaxLength(100) .ValueGeneratedNever(); entity.Property(e => e.Name) .IsRequired() .HasMaxLength(200); }); / next将中间件的调用包装到try,记录异常,然后重新抛出以进行错误处理的中间件将其提取。

下面是一个大概的例子:

catch

您的日志记录中间件在错误处理程序之后 ,以便它可以在错误处理程序启动之前(在返回管道的途中)进行登录。如果要在错误处理程序的之前添加日志记录中间件,则在中间件看到该异常时,该异常将已经转换为响应。