StreamReader.ReadToEnd () не может получить весь поток - PullRequest
1 голос
/ 31 марта 2012

Я получаю поток памяти, представляющий вложение. Вложение является HTML-документом, как показано ниже.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">    
<HTML>    
...    
</HTML>    
<p><img border="0" src="http://www.somewebsite.com/mcv18/mapp_v50/images/mcrptgenlogo.jpg"></p>

Код, который я использую:

Using strm As New MemoryStream()
   anAttachment.Save(strm)
   strm.Position = 0
   Using sr As New StreamReader(strm)
     Dim attachmentAsString As String = sr.ReadToEnd()
   End Using
End Using

anAttachment.Save(strm) - это место, где я получаю содержимое вложения, используя экземпляр класса вложения сторонней библиотеки. Во всяком случае, то, что я в конечном итоге в присоединении AsString, это просто "<". </p>

Если я использую этот код:

anAttachment.Save("C:\Temp\Attachement.tmp"
attachmentAsString = File.ReadAllText("C:\Temp\Attachement.tmp")

Я получаю точно такой же результат. "<" </p>

Когда я проверяю файл на диске, я вижу весь HTML-документ. В первом чанк-коде, если я проверяю strm.Position после вызова ReadToEnd, он проходит до конца потока. Я могу читать байты по отдельности, и каждый раз кажется, что это продвигает позицию, но возвращает некоторые целые числа, которые мне не очень нравятся.

Может кто-нибудь сказать мне, что можно сделать, чтобы это работало?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...