0

我正在使用 Response.Filter。我正在重写 Write 方法。但是我观察到 Write 方法执行了很多次,并且 Write 方法中的响应 html 进入了分块。如何在 Write 方法中读取(然后过滤)完整的 html。

4

1 回答 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 回答