c# - 什么是 HttpContext.Response.HasStarted?

标签 c# .net asp.net-core

例如,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/

相关文章:

c# - ASP.NET Core - 每个租户的 IOptions,每个租户或 Vault 的 appsetting.json

C# 搜索 "Did you mean"功能

c# - 如何防止 SolidColorBrush 对象发生内存泄漏?

c# - Windows 服务启动顺序导致 WCF 服务出现故障状态

asp.net-core - 使用 IResultFilter 包装 ASP.NET Core WebAPI 方法的结果

c# - 用于继承/类型区分的自定义模型绑定(bind)器

c# - 如何用双引号替换文件中的字符串

c# - 从 c# 到 vb.net 的代码转换,包括事件处理程序

c# - 在不依赖 app.config 的情况下使用 SOAP Web 服务

c# - Coldfusion 在实例化 .Net 引用时缺少错误信息