我们有一些中间件需要重写响应,并且每隔几个请求,我发现我都无法将流中的内容读入字符串,即使Position显示为5000(表明数据已经存在)
这是在加载同一网页时,因此应该具有5000字节的数据。
有一个非常相似的问题here,但我无法解决这个问题
public async Task Invoke(HttpContext httpContext)
{
Stream originBody = httpContext.Response.Body;
MetaDataContentStream newBody = new MetaDataContentStream();
httpContext.Response.Body = newBody;
await m_Next(httpContext);
newBody.Seek(0, SeekOrigin.Begin);
string content = await new StreamReader(newBody).ReadToEndAsync();
// NB: content is sometimes an empty string!
// other code...
}
如果我再次调用ReadToEndAsync,它将加载数据,但是我想知道是否存在“更精细”的方法。