2010-01-29 3 views
2

Я пытаюсь передать файл PDF. Большинство файлов открываются без проблем, но иногда они терпят неудачу. Когда он терпит неудачу, он также выглядит как размер файла меньше исходного. Например, я пытался открыть файл 47K, но когда потоковый вывод в браузер составляет всего 44.5K. Когда вы проверяете размер потока (result.FileStream), его 47K, как и предполагалось.Почему размер буфера меняет мой поток?

Я использую Stream.Read для вывода файла в браузер. Когда у меня была проблема, я использовал буфер размером 10000 байт. Однако, когда я изменил размер буфера от 10000 до 1000, проблема исчезла, и я смог записать файл. Я не могу объяснить, почему изменение размера буфера приводит к тому, что потоковая передача ведет себя по-разному.

Вот код, я использую result.FileStrea м имеет тип потока:

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(); 

Пожалуйста, просветите меня, потому что я определенно не понимаю.

ответ

2

Вы используете Response.Close(), который кажется намного более злым, тогда документация заставит вас поверить.

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

+0

Вы человек. Это была проблема. +1 – Vadim