如何从Windows服务中读取文本文件?

时间:2012-06-26 18:43:05

标签: c# windows-services

我已经安装了一个安装在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文件?

3 个答案:

答案 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"));