2010-03-05 117 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文件名给它。

相关问题