gpt4 book ai didi

asp.net-core - 写入一些数据后如何重置 Asp.Net Core Response.Body

转载 作者:行者123 更新时间:2023-12-02 20:16:34 24 4
gpt4 key购买 nike

由于某些原因,我需要在中间件中写入一些数据后重置Response.Body。

我在中间件调用方法中尝试过:

if (!context.Response.HasStarted)
{
// Not committed / data was not sent to client yet

// Reset Response
context.Response.StatusCode = StatusCodes.Status200OK;
context.Response.HttpContext.Features.Get<IHttpResponseFeature>().ReasonPhrase = null;

if (context.Response.Body.CanSeek)
{
context.Response.Body.SetLength(0);
}

// Reset headers
responseWrapper.ResetAddedHeaders()
}

问题是 context.Response.HasStarted 始终为 TRUE,即使有一些字节从 Controller 操作写入 Response.Body。

我认为 Response Body 有一个内部缓冲区,因此 context.Response.HasStarted 必须为 FALSE,除非内部缓冲区已满。

有什么想法吗?谢谢!

最佳答案

您无法重新启动响应正文。您可以使用像此中间件那样的技术来启用响应缓冲 https://github.com/aspnet/BasicMiddleware/tree/master/src/Microsoft.AspNetCore.Buffering

关于asp.net-core - 写入一些数据后如何重置 Asp.Net Core Response.Body,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52265204/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com