2010-03-05 149 views
0

我有VB.net窗口服務,並且在我使用的應用程序的同一目錄中的XML文件中的一個功能。.Net Windows服務無法訪問文件

當我通過服務啓動安裝服務時,它沒有找到xml文件。如何將XML文件包含在Web服務中?

如果我將該文件複製到與exe和app.config文件相同的文件夾,它仍然無法找到它。

+0

該服務如何嘗試「查找」XML文件? – Sam 2010-03-05 02:18:54

回答

2

與其他類型的應用程序一樣,Windows服務通過路徑查找文件。如果路徑不是絕對路徑,則當前目錄路徑是文件查找的一部分。

你應該確保你知道你的當前目錄是什麼。顯示System.Environment.CurrentDirectory,看看它的價值。

+0

感謝您的及時迴應約翰 – acadia 2010-03-05 02:27:10

0

試試這個:

using System.IO; 
using System.Reflection; 
. 
. 
. 
string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase); 
string fileName = Path.Join(path, "my_xml_file.xml"); 

然後嘗試打開的文件名。

它能找到它嗎?

0

對於Windows服務,它們通過SvcHost.exe應用程序啓動,因此您的Windows服務基於該應用程序的上下文。嘗試的基礎路徑,而不是這樣:

private string GetPath() 
{ 
    Assembly asm = Assembly.GetAssembly(typeof(MyClass)); 
    return asm.Location; 
} 

這應該讓你的完整路徑服務EXE文件,從中可以提取目錄,然後結合XML文件名給它。

相關問題