我正在使用Response.Filter。我重写了Write方法。但我观察到Write方法正在执行多次,并且Write方法中的响应html进入了分块状态。如何在Write方法中读取(然后过滤)完整的html。
答案 0 :(得分: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();
}
}