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