【发布时间】:2017-10-10 19:58:52
【问题描述】:
我在 Visual Studio 中有一个生成可执行文件的项目。我已经从该可执行文件创建了一个 Windows 服务。每当我运行它时,它都会失败并出现以下错误:
错误 1053:服务没有响应启动或控制 及时提出要求。
查看 Windows 事件查看器后,我发现我收到了位于项目工作目录中的 FileNotFoundException。这是打开文件的部分:
using (StreamReader file = File.OpenText("configSet.json"))
{
JsonSerializer serializer = new JsonSerializer();
configSet = (ConfigSet)serializer.Deserialize(file, typeof(ConfigSet));
}
每当我在 Visual Studio 中或从命令提示符处运行该服务时,它都能正常工作。由于某种原因,当我尝试将其作为 Windows 服务启动时,这不起作用。
我还发现,在将文件作为 Windows 服务启动时,硬编码文件路径可以正常工作。
我想避免这种情况并尽可能使用相对路径(因此我不必执行代码检查来确定我是从 Visual Studio、命令提示符还是作为 Windows 服务运行服务)。
【问题讨论】:
-
你的 json 文件在哪里?
-
@S.Petrosov 在我生成的项目文件夹的根文件夹中。基本上,我在 Visual Studio 中有一个项目。我将它发布到我的桌面,这会生成一个包含所需 dll、文件夹等的文件夹。该文件夹包含我创建服务的可执行文件。它还包含 json 文件。我将整个文件夹移至 Program Files。之后,我通过以下方式创建服务: sc.exe create MY.SERVICE binpath= "C:\Program Files\myService\myService.exe
-
文件很可能不在正确的路径中。服务从不同于可执行文件所在的目录运行。 stackoverflow.com/questions/884963/…
标签: c# service directory windows-services