【发布时间】:2020-06-24 19:30:17
【问题描述】:
如何获取活动中间件的列表? 如何获取特定 url 的中间件列表(每个 url 可能有一组不同的中间件添加到管道中)?
我想知道使用一些常见的构建器扩展(如UseMvc() 或app.UseIdentity();)添加了哪些中间件
我知道我可以检查每个扩展的源代码。有没有运行时方法来获取这个?
【问题讨论】:
标签: asp.net-core
如何获取活动中间件的列表? 如何获取特定 url 的中间件列表(每个 url 可能有一组不同的中间件添加到管道中)?
我想知道使用一些常见的构建器扩展(如UseMvc() 或app.UseIdentity();)添加了哪些中间件
我知道我可以检查每个扩展的源代码。有没有运行时方法来获取这个?
【问题讨论】:
标签: asp.net-core
不,你不能。当您将中间件添加到管道时,它会解析为 Func<RequestDelegate, RequestDelegate>。 组件 保存在ApplicationBuilder 实现中的私有字段中。但是,您可以使用一些反射魔法烘焙一个扩展方法来确定实际的中间件类型,但这并非易事。
【讨论】:
您可以在 Stack 中看到中间件列表。 您可以最后添加中间件,在 Invoke 方法的某处放置一个断点。当调试器停止时,您将看到之前对其他中间件的所有调用。
【讨论】: