我已经安装了一个安装在c:\Program Files\My Service
目录中的Windows服务。与可执行文件一起,我有一个安装在同一目录中的XML文件。服务使用此XML文件来获取用户定义的信息。
在服务的代码中,我读取文件就好像它是可执行文件的本地文件一样。例如:
DataSet ds = new DataSet();
ds.ReadXml("Foo.xml");
但是,当我运行该服务时,该服务会抛出一个异常说:
无法找到文件'C:\ Windows \ system32 \ Foo.xml'
由于可执行文件位于c:\Program Files\My Service
,我希望Windows服务在c:\Program Files\My Service\Foo.xml
中查找XML文件。显然,事实并非如此。
如何在服务可执行文件所在的同一位置强制服务查看(相对)Foo.xml文件?
答案 0 :(得分:14)
使用此:
System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Foo.xml");
答案 1 :(得分:0)
这将为您提供所需的信息
DataSet ds = new DataSet();
ds.ReadXml(System.IO.Path.Combine(System.Reflection.Assembly.GetExecutingAssembly().Location,"Foo.xml");
答案 2 :(得分:0)
由于Windows服务工作目录是C:\ Windows \ System32。
为了按预期读取您的xml文件,您必须执行以下操作
DataSet ds = new DataSet();
ds.ReadXml(Path.Combine(System.Reflection.Assembly.GetExecutingAssembly().Location, "Foo.xml"));