【发布时间】:2020-03-07 08:20:50
【问题描述】:
如果我在请求管道的 Use() 方法中不调用 next() 方法或 next.Invoke() 会发生什么,它会调用下一个中间件组件吗?
【问题讨论】:
-
不,请求将不再进行。如果您想拦截请求,这非常有用。
标签: asp.net-core .net-core asp.net-core-2.1 request-pipeline
如果我在请求管道的 Use() 方法中不调用 next() 方法或 next.Invoke() 会发生什么,它会调用下一个中间件组件吗?
【问题讨论】:
标签: asp.net-core .net-core asp.net-core-2.1 request-pipeline
来自docs,强调我的:
将多个请求委托与 Use 链接在一起。下一个参数代表管道中的下一个委托。 您可以通过不调用下一个参数来使管道短路。
还有:
当一个委托没有将请求传递给下一个委托时,这称为短路请求管道。短路通常是可取的,因为它可以避免不必要的工作。例如,静态文件中间件可以通过处理对静态文件的请求并短路管道的其余部分来充当终端中间件。
因此,如果您不调用下一项,管道将停在那里。
【讨论】: