为什么缓冲区大小会改变我的流输出?

问题描述:

我正在尝试传输pdf文件。大多数文件没有任何问题,但有时会失败。当它失败时,它看起来像文件大小比原来的小。例如,我试图打开一个47K文件,但当流式输出到浏览器时,它只有44.5K。当检查流的大小(result.FileStream)时,它应该是47K。为什么缓冲区大小会改变我的流输出?

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

下面是我使用result.FileStrea米代码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(); 

请赐教,因为我绝对不明白的东西。

你正在使用Response.Close(),这似乎是更邪恶的文档会让你相信。

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

+0

你是达人。这是问题所在。 +1 – Vadim 2010-01-29 23:58:10