.net - .Net Windows 服务的相对路径问题..?

标签 .net file-io windows-services relative-path

我有一个 Windows 服务,它正在尝试从应用程序目录访问 xml 文件。

Windows服务安装目录:C:\Services\MyService\MyService.exe
xml文件的路径:C:\Services\MyService\MyService.xml

我正在尝试使用以下代码访问该文件。

using (FileStream stream = new FileStream("MyService.xml", FileMode.Open, FileAccess.Read))
  {
         //Read file           
  }

我收到以下错误。

“找不到文件:C:\WINDOWS\system32\MyService.xml”

我的服务正在使用本地系统帐户运行,我不想使用绝对路径。

最佳答案

以下链接提供了一个优雅的解决方案。

http://haacked.com/archive/2004/06/29/current-directory-for-windows-service-is-not-what-you-expect.aspx/

由于我的服务同时作为控制台/服务运行,我刚刚调用了

Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory) 

在将其作为服务运行之前

static void Main(string[] args)
        {
            if (args.Length == 0)
            {
                Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory);
                RunAsService();
            }
            else
            {
                RunAsConsole();
            }
        }

关于.net - .Net Windows 服务的相对路径问题..?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2714262/

相关文章:

multithreading - 如何只触发一次 System.Timers.Timer

.net - TFS 2015 构建模板无法构建 C#7 功能

java - 输出文件不包含我从源复制的所有行

c - c 中的链表(从文件中读取)

c# - 使用 C# 使用 Windows 服务 [用 C# 编写]

windows-services - 无需重新发明轮子即可部署 Microsoft 堆栈应用程序

c# - 一个读者,许多作者

.net - 任何用于 PostgreSQL 的 JSON 类型的高级 .NET 客户端?

.net - 在 <link> 元素上使用 Razor 2 编写 RSS 失败

c# - 将 C# 脚本解析为 Java