C# OpenXMLSDK2.5使我们的IIS实例崩溃

C# OpenXMLSDK2.5使我们的IIS实例崩溃,c#,iis,openxml-sdk,C#,Iis,Openxml Sdk,我们正在使用OpenXMLSDK在word中创建报告。但是,如果客户端需要相同的报告,则会导致IIS实例挂起,并且在重新启动之前无法提供报告。我发现下面的代码使IIS挂起 using(WordprocessingDocument o = WordProcessesingDocument.Open(stream, true) { //some processing } 当有一个客户要求提供报告时,它可以正常工作,但每次有多个客户要求提供报告时,它都会挂在那里。有没有人有过类似的问题,或者对可

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

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

当有一个客户要求提供报告时,它可以正常工作,但每次有多个客户要求提供报告时,它都会挂在那里。有没有人有过类似的问题,或者对可能出现的问题有什么好的建议?我可以从我们的日志中看到请求在不同的线程中运行。

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


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

这可能与隔离存储有关。如果文件足够大(>10MB),则System.IO.Packaging(由OpenXML使用)使用隔离存储。隔离存储不是线程安全的,这会导致问题。可以找到更多细节。如果这是原因,那么修复方法就是升级到2.6(不再使用独立存储)。谢谢你,皮特。升级到2.6解决了此问题。不用担心,您是否希望我添加此作为完整性的答案?是,请将您的评论标记为答案