[转]临时文件未清理导致水晶报表周期性打开报表失败

时间:2023-01-30 11:39:57

本文转自:http://www.cnblogs.com/zhangpengshou/archive/2007/12/06/984947.html 原作者:一路前行
我已根据需要对文章内容做了少许编辑



故障描述:
VS2005的水晶报表在WEB应用程序中多次使用后,就会出现加载报表失败.重启WEB服务器又正常了.过一段时间又出同样问题

用户使用水晶报表的时候出现加载报表错误.
刚开始用户使用非常正常,但使用一天(该用户使用报表频率非常大)就会出现"报表加载失败",然后用户重启服务器这后又可以了

我发现在C:\WINDOWS\Temp这个临时文件里面有大量的水晶报表文件,每使用一次就会生成几个文件,
在电脑没有重新启动的情况下它不会被删除,而出现大量的无用文件,

在google里面搜了一圈发现也有人碰到这样的情况但回答的很模糊只是说要将水晶报表装载的文档关闭掉,
从这里可以看出出现这样的错误应该是程序员人为照成的.

具体解决如下:
1.ReportDocumen实例必须为类成员

        private   ReportDocument   prtp   =   new   ReportDocument();       

2.使用完水晶报表必须关闭文件,这样子就不会在windows的临时文件里面产生.


        private   void   Page_Unload(object   sender,   EventArgs   e)
        {
                prtp.Dispose();
        } 
                         
Page_Unload   事件是在页面完全显示的时候运行,这样子就解决了.


按照此方法,导入导出excel操作的类似问题应该也可以用这个方法解决。