如何在ASP.NET CORE 3.1筛选器中正确记录响应HTTP代码?

问题描述

我想在过滤器中记录响应HTTP状态代码吗?我有一个动作过滤器和一个异常过滤器。我可以在异常过滤器中记录500个响应。但是我在动作过滤器中获得的响应对象始终为200,因为那时响应主体没有写入。

我考虑过要使用中间件,但是我似乎无法在中间件中获得Controller名称和Action名称。有什么建议吗?

解决方法

我知道了...

                var endpoint = httpContext.GetEndpoint();
            if (endpoint != null)
            {
                var controllerActionDescriptor = endpoint.Metadata.GetMetadata<ControllerActionDescriptor>();
                if (controllerActionDescriptor != null)
                {
                    var controllerName = controllerActionDescriptor.ControllerName;
                    var actionName = controllerActionDescriptor.ActionName;
                }
            }