HttpContext.Response.HasStarted 的用途是什么?

5 .net c# asp.net-core

例如ExceptionHandlerMiddleware Github 上的中间件代码

将此用作:

if (context.Response.HasStarted ||...)
Run Code Online (Sandbox Code Playgroud)

我不太明白,假​​设是管道中的ExceptionHandlerMiddleware第一个中间件,当请求仍在管道中时,Web 服务器如何开始向客户端发送响应?因为请求还没有从ExceptionHandlerMiddleware中出来,所以还没有到达Web服务器,那么在这种情况下Web服务器怎么可能已经开始向客户端发送响应呢?

Dam*_*ver 3

任何中间件或处理程序都可以选择WriteAsync在 上调用(或其他类似方法)HttpResponse,可能会多次。

不一定将所有这些写入都存储在本地缓冲区中,并且实际上可能不希望仅在本地进行缓冲。因此,迟早,这些Write调用将导致通过网络发送真实数据。

并且,在这个具体示例中,处理程序在遇到导致控制权返回到ExceptionHandlerMiddleware.