问题:同一套计算程序,采用exe方式启动(用户启动)与采用Windows服务启动所得到的计算结果不一致。
原因分析:改计算程序会读取一个文件(文件与exe文件位于同一文件夹),若文件存在,会读取文件内容参与计算;若文件不存在,则跳过文件读取步骤。
文件采用相对路径方式进行读取,采用exe方式启动时,程序工作目录就是程序当前所在的目录,计算程序可找到该文件;当采用Windows服务启动时,程序工作目录则是默认system32目录,则无法找到该文件,从而导致两种启动方式计算结果不一致。
解决方法:读取文件时,获取程序当前工作目录,采用绝对路径方式读取文件。
//取程序当前工作目录
string basePath = Path.GetDirectoryName(System.AppDomain.CurrentDomain.BaseDirectory);
当一个计算程序以exe方式和Windows服务方式启动时,由于工作目录不同导致读取文件路径错误,从而计算结果不一致。问题在于服务启动时工作目录为system32,无法找到相对路径的文件。解决方案是获取程序当前工作目录并使用绝对路径读取文件,确保一致性。
参考:

被折叠的 条评论
为什么被折叠?



