如何获取活动中间件的列表? 如何获取特定URL的中间件列表(每个URL可能已向管道添加了一组不同的中间件)?
How do I get a list of active middlewares? How do I get a list of middlewares for specific url (each url may have a different set of middlewares added to the pipeline)?
我想通过使用某些常见的构建器扩展(例如UseMvc()或app.UseIdentity();
I would like to know which middlewares are being added by using some of the common builder extensions like UseMvc() or app.UseIdentity();
我知道我可以检查每个扩展的源代码.有运行时方法可以做到这一点吗?
I know I could check the source code of each extension. Is there a runtime method to get this?
推荐答案不,您不能.当您将中间件添加到管道中时,它已解析为Func<RequestDelegate, RequestDelegate>. 组件保存在 ApplicationBuilder 实现.但是,您可以使用一些反射魔术来烘焙扩展方法来确定实际的中间件类型,但这并不简单.
No, you can't. When you add a middleware to the pipeline, it's resolved to a Func<RequestDelegate, RequestDelegate>. The components are saved in a private field in the ApplicationBuilder implementation. You could however bake an extension method with some reflection magic to determine the actual middleware type, but it's not trivial.
更多推荐
如何在ASP.NET Core中获取中间件列表
发布评论