Não tenho 100% de certeza se o seu problema era o mesmo que eu tive, mas no meu caso, descobri que o problema estava realmente na escrita parte, não na parte de leitura. Por exemplo, meu código de escrita original era assim:
Dim FILE_CONTENT(len) As Byte
File.InputStream.Read(FILE_CONTENT, 0, len)
SaveFileToDatabase(FILE_NAME, CONTENT_TYPE, FILE_CONTENT)
Quando alterei a primeira linha da seguinte forma:
Dim FILE_CONTENT(0 To len - 1) As Byte
o erro de leitura desapareceu. Acabei de esquecer que o VB realmente aloca N + 1 bytes (O a N) por padrão quando você o dimensiona sem especificar o limite inferior. Veja uma situação semelhante descrita aqui:Os arquivos Docx enviados estão corrompidos . Espero que ajude.