如何判断中间件是否包含 运行()?

How to tell if middleware contains a Run()?

是否有任何方法可以在 ASP.NET Core 中判断任何给定的中间件是否将包含一个 Run() 调用来停止管道?似乎 UseMvc() 是一个大的,但我什至不确定,我只是继续阅读它需要在最后,我假设它是因为它包含对 Run() 的调用.

也许有一种方法可以为当前使用的所有中间件生成管道的可视化,显示哪个包含 Run() 调用?

除了阅读每个特定中间件的文档之外,没有确定的方法来判断。

在对我的问题的评论中引用 itminus:

  1. 不仅运行(),MapWhen()也会终止进程。此外,任何人都可以创建不调用下一个委托然后导致终止的自定义中间件。
  2. 判断是否需要调用next是中间件的职责。除非您阅读 document/source 代码,否则没有可视化管道的内置方法。这是因为所有中间件都将在启动时构建到一个最终委托中。当有传入消息时,最终委托将用于处理请求。作为程序员,我们知道中间件将做什么,我们知道它分支的时间,我们知道它终止的时间,因为我们编写了代码。但是程序在实际运行之前不会知道它,因为最终委托是在启动时构建的。