我已經創建了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