RestoreDirectory的噩梦

最近一年忙于一个让人头疼的项目,现在终于可以稍微放松下来,写写博客了,闲话不说了,先说问题吧

场景:

曾经做的一个期货项目中,A模块是查询资金相关数据,可以导出为excel保存到本地。B模块为报表模块,根据配置文件初始化报表框架。

问题:

A模块在导出数据到本地后,再打开B模块,B模块报错,为配置信息错误;但是如果不打开A模块,B模块可以正常打开

分析问题:

通过分析日志,可以发现是因为B模块的配置文件的路径被重定向了。数据库中保存的B模块的配置文件是一个相对路径,基路径为系统启动目录。而在打开A模块之后,B模块的配置文件的路径被转向了保存excel的路径。所以肯定是A模块在保存excel时,将当前路径System.Environment.CurrentDirectory修改了。于是想在我的电脑上重现该问题,但是无论如何测试就是没有办法重新,而客户每次都可以重现。还是先在网上查找相关信息,查到如下内容:

RestoreDirectory是控制当前程序中的System.Environment.CurrentDirectory的,也就是,当属性设置为true时,System.Environment.CurrentDirectory永远是程序从中启动的文件夹目录;而设置为false是,则每次使用OpenFileDialog选择完文件后,System.Environment.CurrentDirectory会变成最后一次打开文件的目录http://topic.csdn.net/u/20080722/00/7ab47aba-986e-4364-a187-4c201e466ba9.html

然后查找程序,A模块在导出excel的时候使用到了System.Windows.Forms.SaveFileDialog控件,确实没有设置RestoreDirectory属性为true,于是进行修改。修改完成,却没有办法确定是否修改成功,因为在我的电脑上无法重现该问题,又没有办法在客户的机器上测试,真的很郁闷。后来忽然一想,难道这个属性的设置还和系统相关吗?因为我的PC是WIN7系统,而客户是XP系统。于是在虚拟机的XP上进行测试,还真的是这样。让我不明白,在网络上也没有查找相关信息,特将此问题记于此处,待有时间再好好分析分析。

posted on 2011-08-26 11:14  翔龙  阅读(657)  评论(1编辑  收藏  举报

导航