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

C# 如何将mht从流/字符串加载到WebBrowser控件中?,c#,.net,winforms,webbrowser-control,mhtml,C#,.net,Winforms,Webbrowser Control,Mhtml,如果我使用Navigate方法,WebBrowser控件将正确加载任何mht文件,但是当我使用DocumentText或DocumentStream属性时,mht文件的源文件将显示为我在记事本中打开的文件 如果我将流写入临时文件,然后导航到它,它会正常工作,但我不想这样做 这个问题似乎很常见,但我没有找到有效的解决方案。建议我应该通过实现IPersistMonikercom接口等来愚弄IE。我试过一点,但不幸的是,我得到了同样的结果。可能是我做错了什么。我仍然觉得他们应该是一个更简单的解决方案(

如果我使用
Navigate
方法,WebBrowser控件将正确加载任何
mht
文件,但是当我使用
DocumentText
DocumentStream
属性时,
mht
文件的源文件将显示为我在记事本中打开的文件

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


这个问题似乎很常见,但我没有找到有效的解决方案。建议我应该通过实现
IPersistMoniker
com接口等来愚弄IE。我试过一点,但不幸的是,我得到了同样的结果。可能是我做错了什么。我仍然觉得他们应该是一个更简单的解决方案(而不是先保存在临时文件中),有什么想法吗?

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

在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()
问题只是我似乎接受了

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

where source-指向.mht文件的路径

虽然我在问题中说我不想使用临时文件方法,但我最终还是认为我应该使用它!我用HttpListener实现了一个简单的web服务器,成功地愚弄了WebBrowser控件,但最终我发现WebBrowser本身将文件保存在“临时Internet文件”中!为了简单起见,我会自己保存文件并在加载完成后删除它。哈哈:)好吧,会有很多失败点。我希望你没有打算做任何重要的事情。否则,恭喜:)响应仅在web应用程序上下文中有效。OP谈论的是WinForms中使用的控件,而不是web。