我创建了一个Windows服务。我使用Windows安装程序设置服务。 我有一个像配置文件的XML文件。每当我通过附加调试项目调试Windows服务它工作正常。但是在安装之后我可以看到事件说无法在C:\ Windows \ system32中找到example.xml文件。这是一个重复的问题。任何人都可以告诉我这是怎么回事。还是有什么建议吗?
答案 0 :(得分:2)
最有可能的文件并不在你想要的地方。
有可能你的代码在“当前工作文件夹”中查找,在VS中调试期间与应用程序相同,但是在启动时作为service / from命令行是不同的。
确保您的代码从您希望文件所在的位置(即应用程序旁边)加载文件,但不是从某个相对路径(如“myfile.xml”)加载。
答案 1 :(得分:2)
这不是安装程序问题。 Windows Services始终以System32作为当前目录启动。在启动任何服务之前,将此行添加到Program.cs中的Main()方法。
Environment.CurrentDirectory = new FileInfo(Assembly.GetExecutingAssembly().FullName).DirectoryName;
答案 2 :(得分:1)
为什么要保存Windows文件夹中的内容?除非有真的这样做的理由,否则错误。将配置安装在运行应用程序的相同位置,并使用以下命令获取文件路径:
var folderPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
var configPath = Path.Combine(folderPath, configFileName);
答案 3 :(得分:-1)
问题是您的服务未以管理员身份运行。如果该服务未以管理员身份运行,则它将无法读取system32文件夹下的文件。
更改服务属性以管理员身份运行。这应该可以解决问题。