我正在使用 Response.Filter。我正在重写 Write 方法。但是我观察到 Write 方法执行了很多次,并且 Write 方法中的响应 html 进入了分块。如何在 Write 方法中读取(然后过滤)完整的 html。
问问题
297 次
1 回答
1
您应该避免这样做,因为它可能会对您的网站产生性能影响。过滤器是流,它们是低级的,用于直接处理响应字节,因此非常适合执行 Gzip 压缩等操作。
理想情况下,您应该尝试分块进行过滤操作。如果你真的不能,你可以写一个基于MemoryStream
. 请记住,您将创建一个内存缓冲区,因此请确保您的响应相对较短。
public class ReadAllIntoMemoryFilter : MemoryStream
{
private readonly Stream _baseFilter;
public ReadAllIntoMemoryFilter(Stream baseFilter)
{
_baseFilter = baseFilter;
}
public override void Close()
{
var bytes = GetBuffer();
// do your work here
_baseFilter.Write(bytes, 0, bytes.Length);
_baseFilter.Close();
base.Close();
}
}
于 2012-07-23T14:32:09.023 回答