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

时间:2021-05-11 11:40:25

转自:http://www.cnblogs.com/babyt/archive/2008/02/20/1075205.html 作者:babyt

 

故障描述:
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操作的类似问题应该也可以用这个方法解决。

 

ADD BY 玉开(http://space.cnblogs.com/question/2582

如果上面的方法无效试试修改临时文件的目录:
我的电脑上点右键,属性,高级,环境变量,更改当前用户的temp和tmp路径到指定位置,然后重新启动一下就可以了