随机错误内存流不可扩展

Random error Memory stream is not expandable

我正在使用以下随机抛出错误的代码更新 word 文档内容内存流不可扩展:

MemoryStream TemplateFileMS = new MemoryStream(fileBytes);
using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(TemplateFileMS, true))
//...
// some code
//...
wordDoc.MainDocumentPart.Document.Save(); // Exception here

将代码更改为以下后,错误未发生。

MemoryStream TemplateFileMS = new MemoryStream(0);
TemplateFileMS.Write(fileBytes, 0, fileBytes.Length);

所以我能够解决这个问题。但是我在 Azure App Service 的开发环境中没有看到上述错误,但是在生产 Azure App Service 中我随机得到内存不可扩展错误。

这与这里产生差异的bytes/updates的数量有关吗?例如在测试时我只做了很少的更新,但在某些情况下有更多的更新需要比设置容量更多的内存。

我尝试向文档添加更多更新,但我无法用以前的代码重现此错误。

谢谢!

通常,您只会将 MemoryStream 从 byte[] 初始化为 read 来自现有缓冲区的值。但是您正在 写入 到流中。这意味着您要么需要让 MemoryStream 自己管理缓冲区(不给它一个),要么您给它的缓冲区需要足够大。在大多数情况下,第一个选项更简单。它抱怨是因为你给它的缓冲区太小了,但它无法调整它的大小,因为你在外部定义了缓冲区(而不是让 MemoryStream 控制) .