Open XML sdk 2.5崩溃了我们的IIS实例

时间:2016-12-18 22:12:48

标签: c# iis openxml-sdk

我们正在使用Open XML SDK在word中创建报告。但是,如果客户端需要相同的报告,则会使我们的IIS实例挂起,并且在重新启动之前无法提供报告。我已经确定下面的代码使IIS挂起。

using(WordprocessingDocument o = WordProcessesingDocument.Open(stream, true)
{
  //some processing
}

当有一个客户要求报告时,它工作正常,但每次有多个客户要求报告时,它就会挂起。有没有人有类似的问题或有一些关于可能出错的好建议?我可以从日志中看到请求在不同的线程中运行。

1 个答案:

答案 0 :(得分:1)

这是由于隔离存储造成的。如果您正在阅读的文件足够大(> 10MB),则System.IO.Packaging使用隔离存储(由OpenXML使用)。

隔离存储如果同时从多个线程访问,或者由具有相同强名称的多个程序集(如此处的情况)访问,则会出错。有关详细信息,请访问Eric White的博客here。幸运的是,在同一个博客上,Eric详细介绍了他在框架的2.6版本中生成的修复程序,其中重新编写了System.IO.Packaging,因此它不再使用独立存储。升级到该版本将解决您的问题。