0

我想将从服务器读取的电子邮件插入到 MongoDB。我使用 MimeKit 从服务器获取电子邮件。尝试直接插入mimeMessage.ToBsonDocument()我得到System.InvalidOperationException: 'Timeouts are not supported on this stream.'所以我猜测消息对象使用内部流从服务器读取数据。

我现在想使用内存流首先将数据写入流,然后从该流创建 BsonDocument。

我在这里读到,最好的方法是使用BsonDocument.ReadFrom(ms);但编译器在 BsonDocument 中找不到方法“ReadFrom”。

此方法是否已在较新版本中替换?什么?或者从流中创建 BsonDocument 的最佳方法是什么?

谢谢

4

1 回答 1

0

根据http://api.mongodb.com/csharp/2.0/html/Methods_T_MongoDB_Bson_BsonDocument.htm上的文档,您似乎需要将流转换为字符串,然后使用该Parse()方法:

string bsonText;
using (var reader = new StreamReader (ms))
    bsonText = reader.ReadToEnd ();

var bsonDocument = BsonDocument.Parse (bsonText);

也就是说,我认为您不能只将 写入MimeMessage流然后期望将其解析为BsonDocument. 当您将 a 写入MimeMessage流时,它将采用 MIME 格式,而不是 BSON 格式。

于 2018-02-25T12:06:31.860 回答