代码之家  ›  专栏  ›  技术社区  ›  Vadim

为什么缓冲区大小会更改流输出?

  •  2
  • Vadim  · 技术社区  · 15 年前

    我正在尝试传输一个PDF文件。大多数文件打开时没有任何问题,但有时会失败。当它失败时,看起来文件大小也比原来的小。例如,我试图打开一个47K文件,但是当流输出到浏览器时,它只有44.5K。( result.FileStream ,这应该是47K。

    我正在使用stream.read将文件输出到浏览器。当我遇到问题时,我使用的缓冲区大小是10000字节。但是,当我将缓冲区大小从10000更改为1000时,问题就消失了,我能够访问文件。我无法解释为什么缓冲区大小的变化会使流的行为有所不同。

    这是我使用的代码 result.FileStrea m为stream类型:

    using (result.FileStream)
    {
        int length;
        const int byteSize = 1000;
        var buffer = new byte[byteSize];
    
        while ((length = result.FileStream.Read(buffer, 0, byteSize)) > 0 && Response.IsClientConnected)
        {
            Response.OutputStream.Write(buffer, 0, length);
            Response.Flush();
        }
    }
    
    Response.Close();
    

    请启发我,因为我肯定不明白什么。

    1 回复  |  直到 15 年前
        1
  •  2
  •   Journey    15 年前

    您使用的是response.close(),这看起来比文档让您相信的邪恶得多。

    http://forums.iis.net/t/1152058.aspx

    推荐文章