例如,ExceptionHandlerMiddleware
Middleware code on Github
将其用作:
if (context.Response.HasStarted ||...)
我不太明白,假设 ExceptionHandlerMiddleware
是管道中的第一个中间件,当请求仍在管道中时,Web 服务器如何开始向客户端发送响应?因为请求还没有从ExceptionHandlerMiddleware出来,所以还没有到达web服务器,那么在这种情况下web服务器怎么可能已经开始向客户端发送响应呢?
最佳答案
任何中间件或处理程序都可以选择调用 WriteAsync
(或其他类似方法)在 HttpResponse
上,可能多次。
并非所有这些写入都只存储在本地缓冲区中是不可能的,而且确实可能不希望只在本地缓冲。因此,这些 Write
调用迟早会导致通过网络发送真实数据。
并且,在这个具体示例中,处理程序在遇到导致控制权返回到 ExceptionHandlerMiddleware
的错误情况之前可能已经进行了多次调用,例如上述调用。
关于c# - 什么是 HttpContext.Response.HasStarted?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68357686/