我有VB.net窗口服務,並且在我使用的應用程序的同一目錄中的XML文件中的一個功能。.Net Windows服務無法訪問文件
當我通過服務啓動安裝服務時,它沒有找到xml文件。如何將XML文件包含在Web服務中?
如果我將該文件複製到與exe和app.config文件相同的文件夾,它仍然無法找到它。
我有VB.net窗口服務,並且在我使用的應用程序的同一目錄中的XML文件中的一個功能。.Net Windows服務無法訪問文件
當我通過服務啓動安裝服務時,它沒有找到xml文件。如何將XML文件包含在Web服務中?
如果我將該文件複製到與exe和app.config文件相同的文件夾,它仍然無法找到它。
與其他類型的應用程序一樣,Windows服務通過路徑查找文件。如果路徑不是絕對路徑,則當前目錄路徑是文件查找的一部分。
你應該確保你知道你的當前目錄是什麼。顯示System.Environment.CurrentDirectory
,看看它的價值。
感謝您的及時迴應約翰 – acadia 2010-03-05 02:27:10
試試這個:
using System.IO;
using System.Reflection;
.
.
.
string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);
string fileName = Path.Join(path, "my_xml_file.xml");
然後嘗試打開的文件名。
它能找到它嗎?
對於Windows服務,它們通過SvcHost.exe應用程序啓動,因此您的Windows服務基於該應用程序的上下文。嘗試的基礎路徑,而不是這樣:
private string GetPath()
{
Assembly asm = Assembly.GetAssembly(typeof(MyClass));
return asm.Location;
}
這應該讓你的完整路徑服務EXE文件,從中可以提取目錄,然後結合XML文件名給它。
該服務如何嘗試「查找」XML文件? – Sam 2010-03-05 02:18:54