You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 8下IAsyncEnumerable+Azure OpenAI流式输出在Azure Web App异常求助

问题原因及解决方案

核心原因

部署到Azure Web App后流式响应异常,本质是响应缓冲机制导致的:

  • Azure Web App默认启用ARR(Application Request Routing)缓冲,会将所有响应数据缓存直到请求完成后一次性发送。
  • ASP.NET Core在Azure环境下,默认可能开启全局响应缓冲,覆盖了本地开发时的流式行为。

解决步骤

1. 控制器禁用响应缓冲

在控制器的流式方法上添加[DisableResponseBuffering]特性,强制每个数据块生成后立即发送:

[HttpPost]
[Route("")]
[DisableResponseBuffering]
public async IAsyncEnumerable<ActionResult<Answer>> SendQuestionAsync([FromBody] Question question)
{
    await foreach (var item in _mediator.CreateStream(command))
    {               
        yield return new Answer()
        {
            Id = item.Id,
            DateTime = item.DateTime,
            Message = item.Message,
        };
    }
}

2. 关闭Azure Web App的ARR缓冲

在Azure门户操作:

  • 进入目标Web App -> 配置 -> 常规设置
  • 找到"ARR缓冲"选项,设置为关闭并保存配置。

3. 检查全局响应缓冲配置

在Program.cs中确认没有全局启用响应缓冲的代码:
如果存在app.UseResponseBuffering(),可以针对特定路由禁用,或者直接移除全局配置(若项目不需要全局缓冲)。

4. 验证流式数据源的正确性

确保OpenAI客户端的GetChatCompletionsStreamingAsync返回真正的流式响应:

  • 确认调用时传入了有效的CancellationToken,避免流被提前终止。
  • 检查客户端配置是否明确启用流式传输,无额外缓冲逻辑。

内容的提问来源于stack exchange,提问作者Sergio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 03:19:51