大家好,我在公司内部系统中使用Aspose.Cells.dll打开一个excel文件,然后转为pdf文件供用户预览, 关键代码如下:Workbook wb = new Workbook(filePath);
……
PdfSaveOptions pdfOptions = new PdfSaveOptions(Aspose.Cells.SaveFormat.Pdf);
pdfOptions.CalculateFormula = true;
pdfOptions.ClearData = true;
wb.Save(filePath, pdfOptions);系统是布署在IIS上面,前期一段时间都是没有问题,最近几天总是出现点预览时网页无法响应的问题,经测试问题就出在wb.Save(filePath, pdfOptions)这句代码上面。但回收应用程序池后又恢复正常了,但撑不到10分钟,又无法响应。请问下大家,这种情况问题可能出在那里了?

解决方案 »

  1.   

    我也是怀疑过这个原因,然后为文件引用加了锁private static object sys_objPrint = new object();
    ...... lock (sys_objPrint) //该处必须增加锁设置,防止多个用户同时对模板文件的访问而造成程序无法响应。
    {
           Workbook wb = new Workbook(printFilePath);
      ......
    }但没有效果,也有可能是我的锁加的不对。
      

  2.   

    先判断filePath的文件存不存在,要么就是存在就不再生成,要么就用完后删除,要是不嫌多就用随机文件名
      

  3.   

    filePath是一定存在的,这个是数据生成模板,是不能删除掉的。
      

  4.   

    那你wb.Save(filePath, pdfOptions);这句生成PDF文件不是会重名?至少要另存一个文件吧
      

  5.   

    生成的pdf文件名是以登录用户名+当前时间的时分秒拼凑起来的,理论上不会存在重名的问题。