我有VB.net Windows服务,其中一个函数是我使用的XML文件,它位于应用程序的同一目录中。
当我在服务启动时安装服务时,它找不到xml文件。如何在Web服务中包含XML文件?
如果我将文件复制到与exe和app.config文件相同的文件夹中,它仍然无法找到它。
答案 0 :(得分:2)
与任何其他类型的应用程序一样,Windows服务通过路径定位文件。如果路径不是绝对路径,则当前目录路径是文件查找的一部分。
您应该确保知道当前目录是什么。显示System.Environment.CurrentDirectory
并查看值是什么。
答案 1 :(得分:0)
试试这个:
using System.IO;
using System.Reflection;
.
.
.
string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);
string fileName = Path.Join(path, "my_xml_file.xml");
然后尝试打开fileName。
能找到吗?
答案 2 :(得分:0)
使用Windows服务,它们是通过SvcHost.exe应用程序启动的,因此您的Windows服务基于该应用程序的上下文。尝试以这种方式建立路径:
private string GetPath()
{
Assembly asm = Assembly.GetAssembly(typeof(MyClass));
return asm.Location;
}
这应该为您提供服务EXE文件的完整路径,您可以从该文件中提取目录,然后将XML文件名合并到该文件中。