如何从流/字符串加载mht到WebBrowser控件?

时间:2011-01-16 11:48:42

标签: c# .net winforms webbrowser-control mhtml

如果我使用mht方法,WebBrowser控件会正确加载任何Navigate文件,但当我使用DocumentTextDocumentStream属性时,来源<显示mht文件的/ strong>就像我在记事本中打开文件一样。

如果我将流写入临时文件然后导航到它,它可以正常工作,但我不想这样做。

这个问题似乎很常见,但我找不到适合它的解决方案。 Some people建议我应该通过实现IPersistMoniker com接口等来欺骗IE。我已经尝试了一点,但不幸的是我得到了相同的结果。可能是我做错了什么。我仍然认为他们应该是一个更直接的解决方案(除了首先保存在临时文件中),任何想法?

3 个答案:

答案 0 :(得分:2)

我记得几年前我遇到了同样的问题,虽然我搜索了一个解决方案然后我没有找到任何解决方案。最后,我采用了临时文件方法。祝你好运,如果有答案,我也想知道。

答案 1 :(得分:1)

在vb.net中我们使用了

Response.ContentType = "message/rfc822" 
Dim ByteDocBlob() As Byte = cwWebUtil.ConvertLocalFileToByteArray(FilePath, True)
Dim HTMLText As String = System.Text.Encoding.UTF8.GetString(ByteDocBlob)
Response.Write(HTMLText)
Response.End()

问题是IE似乎只接受它。

答案 2 :(得分:1)

var uri = new Uri(String.Format("file:///{0}", Path.GetFullPath(source)));
wbMain.Navigate(uri);

其中source - .mht文件的路径