我已经创建了Windows服务。我使用Windows安装程序进行服务设置。 我有一个XML文件就像一个配置文件。每当我调试Windows服务与附加调试项目,它工作正常。但安装后,我可以看到事件说无法找到C:\ Windows \ system32中的example.xml文件。这是一个重复的问题。任何人都可以告诉我这是怎么回事。或者有什么建议?Windows服务设置后无法检测到XML文件
回答
这不是安装程序问题。 Windows服务始终以System32作为当前目录启动。在启动任何服务之前,将此行添加到Program.cs中的Main()方法中。
Environment.CurrentDirectory = new FileInfo(Assembly.GetExecutingAssembly().FullName).DirectoryName;
最有可能的文件仅仅是不是你正在寻找它。
有可能你的代码在“当前工作文件夹”,这在VS调试过程是一样的应用,但在/起服务的命令行是不同的情况。
确保您的代码加载从你期望的文件是(旁边应用程序即)文件位置,而不是从一些相对路径(如“将myfile.xml”)。
的问题是,你的服务没有以管理员身份运行。如果该服务未以管理员身份运行,则无法读取system32文件夹下的文件。
更改服务属性以管理员身份运行。这应该解决这个问题。
这不完全正确。很多system32都可以被非管理员读取。 – 2013-03-14 20:06:27
我的服务已经以管理员身份运行。 – nzdev 2013-03-14 20:08:01
你为什么要将东西保存在Windows文件夹中?除非有一个真的很好的理由这样做,这是坏。在您的应用程序运行的相同位置安装您的配置并获取文件路径:
var folderPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
var configPath = Path.Combine(folderPath, configFileName);
Directory.SetCurrentDirectory(Path.GetDirectoryName(Assembly.GetEntryAssembly()。Location)); ConfigurationPath = @“config_file.xml”;使用此工作为我感谢...我有你的想法。 – nzdev 2013-03-14 21:06:36
@nzdev,请考虑正式投票的克里斯托弗Painter的解决方案,你基本上使用... – 2013-03-14 21:14:50
你如何做到这一点对我无关紧要。重要的部分是了解Windows服务从System32开始。 – 2013-03-14 21:29:38
- 1. UwAmp服务器无法检测到每个人都在文件
- 2. wix:无法检测到服务包
- 3. Windows IIS测试服务器设置
- 4. .Net Windows服务无法访问文件
- 5. windows服务 - 配置文件
- 6. C#检测服务器设置
- 7. 设置Windows服务从设置文件c开始#
- 8. 的WebPack-DEV-服务器无法检测嵌套文件夹
- 9. 无法检测到文件'jpg'的mimetype
- 10. 无法在Windows 7上查询代理“自动检测设置”
- 11. Javascript/appcelerator - 无法检测XML
- 12. 无法设置节点并将其表示为服务文件
- 13. 安装windows服务后出现错误的xml文件路径
- 14. 在配置文件中设置windows服务帐号
- 15. 检测Windows 2008服务器和Windows 2003服务器在C#
- 16. Windows服务无法在Windows 2003服务器中访问VB.net中的文件
- 17. Python:检测无法在Windows 7中检测到的目录
- 18. NServiceBus Windows服务:无法停止服务
- 19. windows服务无法访问web服务
- 20. Xcode无法检测到设备
- 21. django-admin无法找到设置文件?
- 22. Windows服务 - 配置文件 - 安装检查该配置文件的变化
- 23. 无法设置SMTP服务器
- 24. 安装后,我无法在Windows服务器上看到turtoisesvn
- 25. 无法安装Windows服务
- 26. windows服务无法停止
- 27. Activator.CreateInstance在Windows无法服务
- 28. 安装Windows服务无法
- 29. 无法启动Windows服务
- 30. Windows无法启动服务
+1:可能的方法,我也推荐@ spender's(+ 1)方法来明确计算配置文件的路径,而不是依赖于当前文件夹(即使你设置了它 - 其他一些代码可能会改变它并加载将再次以更混乱的方式被打破)。 – 2013-03-14 20:52:36
我建议这种方法的原因是,如果海报不理解这种行为,他可能会有其他依赖下游。 – 2013-03-14 21:04:41