Пустой массив с BinaryReader в UploadedFile в С#

Предположим, следующий код:

Stream file = files[0].InputStream;

var FileLen = files[0].ContentLength;

var b = new BinaryReader(file);
var bytes = b.ReadBytes(FileLen);

Если я загружаю CSV-файл, состоящий из 10 записей (257 байт), BinaryReader заполняет массив байтов «0».

Я также написал цикл для пошагового выполнения метода ReadByte BinaryReader, и в первой итерации цикла я получил следующее исключение:

Невозможно прочитать дальше конца потока

Когда я увеличил файл CSV до 200 сотен записей, все заработало просто отлично.

Тогда возникает вопрос: почему это происходит с файлами меньшего размера, и есть ли обходной путь, который позволяет двоичному чтению файлов меньшего размера.


person Paul Shriner    schedule 03.02.2011    source источник
comment
Попробуйте b.BaseStream.Position = 0;, прежде чем звонить ReadBytes   -  person Adeel    schedule 03.02.2011
comment
@Adeel Я ожидаю, что загрузка файла начнется с источника ...   -  person Marc Gravell    schedule 03.02.2011
comment
Странно - и если вы проверите Fiddler и т. Д., Есть ли полезная нагрузка?   -  person Marc Gravell    schedule 03.02.2011
comment
Да, полезная нагрузка есть, я могу загрузить полезную нагрузку в потоковое чтение и вывести первую строку, я уверен, что таким образом смогу получить всю информацию. Однако я хотел бы хранить двоичный файл в БД вместо строковой формы.   -  person Paul Shriner    schedule 03.02.2011
comment
@Adeel, вы были совершенно правы, после проверки всего снова и снова, проблема была в BaseStream.position.   -  person Paul Shriner    schedule 08.02.2011


Ответы (1)


Не знаю, почему, но когда вы используете BinaryReader в загруженном потоке, начальная позиция должна быть установлена ​​явно.

b.BaseStream.Position = 0;
person Paul Shriner    schedule 07.02.2011