gpt4 book ai didi

c# - Windows 服务作为本地系统帐户停留在 "starting"状态

转载 作者:可可西里 更新时间:2023-11-01 07:43:02 24 4
gpt4 key购买 nike

我在 C# 中通过控制台应用程序开发了一个 http 服务器,并决定将它变成一个 Windows 服务,以便能够在无需登录机器的情况下对其进行初始化。

我遵循了 How to create Windows Service 中的所有步骤并将帐户选择为“本地系统”,但是当我在我的服务器机器上安装并按下开始按钮时,它需要一段时间并出现以下错误:

Erro 1053: The service did not respond to the start or control request in timely fashion.

在那之后,服务状态停留在“正在启动”,应用程序无法运行,我什至无法停止服务。

为了解决这个问题,我将其更改为“网络服务”,因此它正常启动,但当我使用命令“netstat -an”检查提示时,应用程序没有在我设置的端口中监听。但是如果我将它作为控制台应用程序运行,应用程序会正常监听。

所以我正在寻找这两个问题之一的答案:

  1. 我应该怎么做才能使用本地系统帐户正确启动服务?
  2. 如果我决定使用网络服务帐户,我应该注意什么以保证我的服务作为服务器正常运行?

最佳答案

当我将控制台应用程序转换为 Windows 服务时,我只是将代码直接放在 OnStart 方法中。然而,我意识到 OnStart 方法应该启动服务,但需要结束一些时间才能真正启动服务。所以我创建了一个线程来运行我的服务并让 OnStart 方法完成。我测试过,服务工作得很好。代码是这样的:

protected override void OnStart(string[] args)
{
Listener(); // this method never returns
}

这是它的工作原理:

protected override void OnStart(string[] args)
{
Thread t = new Thread(new ThreadStart(Listener));
t.Start();
}

但我仍然不明白为什么当我使用网络服务帐户时服务运行(通过“正在启动”状态,但没有运行)。如果有人知道,我会很高兴知道原因。

关于c# - Windows 服务作为本地系统帐户停留在 "starting"状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31249081/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com