Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 如何在写入一些数据后重置Asp.Net核心响应.Body_Asp.net Core_.net Core_Asp.net Core Mvc - Fatal编程技术网

Asp.net core 如何在写入一些数据后重置Asp.Net核心响应.Body

Asp.net core 如何在写入一些数据后重置Asp.Net核心响应.Body,asp.net-core,.net-core,asp.net-core-mvc,Asp.net Core,.net Core,Asp.net Core Mvc,由于某些原因,在中间件中写入一些数据后,我需要重置Response.Body 我在中间件调用方法中尝试了什么: if (!context.Response.HasStarted) { // Not committed / data was not sent to client yet // Reset Response context.Response.StatusCode = StatusCodes.Status200OK; context.Response.

由于某些原因,在中间件中写入一些数据后,我需要重置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()
}
if(!context.Response.HasStarted)
{
//未提交/数据尚未发送到客户端
//重置响应
context.Response.StatusCode=StatusCodes.Status200OK;
context.Response.HttpContext.Features.Get().ReasonPhrase=null;
if(context.Response.Body.CanSeek)
{
context.Response.Body.SetLength(0);
}
//重置标题
responseWrapper.ResetAddedHeaders()的
}
问题是context.Response.HasStarted始终为真,即使控制器操作向Response.Body写入了几个字节。

我认为响应主体有一个内部缓冲区,所以context.Response.HasStarted必须为FALSE,除非内部缓冲区已满


有什么想法吗?谢谢

无法重新启动响应主体。您可以使用类似于此中间件的技术启用响应缓冲