WordprocessingDocument.Close()抛出IsolatedStorageException

时间:2017-11-12 19:13:47

标签: openxml openxml-sdk

我正在构建一个包含582个文字数据点的图表。当我调用WordprocessingDocument.Close()时,我得到一个IsolatedStorageException。

这对我没有意义,因为据我所知,OpenXML SDK是完全自包含的,将数据写入流。没有Office或其他任何可以解决此问题的电话。

尽管如此,我能做些什么来避免这个问题吗?

谢谢 - 戴夫

1 个答案:

答案 0 :(得分:1)

我对与大型XLSX文件相关的IsolatedStorageException进行了一些研究,并找到了解决问题的方法。

根据Eric White's blog,当 legacy OpenXml生成大于10M的文件时,需要利用隔离存储。如果多个线程在报告生成期间访问隔离存储,则System.IO.Packaging将抛出IsolatedStorageException

这是因为编入.NET的System.IO.Packaging编写得不够好,无法处理这些场景。 System.IO.Packaging无法更改。

要解决此问题,您可以尝试以下解决方案之一:

  1. 重构您的代码以使用构建在System.IO.Packaging上的新OpenXml,Eric White重构该组件以消除隔离存储依赖性。 Check this chart以供参考,并使用正确的NuGet命令引入没有WindowsBase依赖的新版本。
  2. 不要重构您的OpenXml代码,但要更改您的报告生成用户界面以禁止(如果可能)或阻止生成大于10M的文件。
  3. 如果您的OpenXml代码嵌入在基于IIS的Web解决方案中并且重构您的代码是不可行的,请尝试其中一个解决方案provided by this blog。这些技术旨在提供IIS所需的权限,以尝试解决此异常,并且可能与Eric White无关。
  4. 如果没有关于您的解决方案架构的更多信息,这些是我目前可以推荐的解决方案。希望他们能帮忙。