某些服务如果未被其他服务使用,则会自动停止

问题描述 投票:0回答:8

尝试启动 Windows 服务时出现错误“某些服务如果未被其他服务使用,则会自动停止”。

我有一个不使用 Windows 服务配置文件并使用静态属性的服务 - 它工作正常

现在,我利用 app.config 文件并重建我的安装项目 + 服务项目。现在我安装该服务,然后尝试启动该服务 - 我收到以下错误:

某些服务如果未被其他服务使用,则会自动停止

服务作为本地系统登录。

欢迎任何意见!谢谢。

c# windows service windows-services
8个回答
42
投票

这通常是以下两种情况之一的结果 - (a) 您的

OnStart()
方法引发异常,或者 (b)
OnStart()
方法没有启动线程来执行工作。

如果问题是 (a),那么显而易见的解决方案是调试服务以找出问题所在。 至少,在

try-catch
方法的内容周围放置一个
OnStart()
块,并在发生异常时将错误记录到系统事件日志中。 然后您可以在 Windows 事件查看器中看到详细信息。

如果问题是(b),那么您需要创建一个实际执行某些操作的线程。 该线程需要是前台线程(而不是后台线程)以防止服务关闭。 典型的

OnStart()
方法如下所示:

private System.Threading.Thread _thread;

protected override void OnStart(string[] args)
{
    try
    {
        // Uncomment this line to debug...
        //System.Diagnostics.Debugger.Break();

        // Create the thread object that will do the service's work.
        _thread = new System.Threading.Thread(DoWork);

        // Start the thread.
        _thread.Start();

        // Log an event to indicate successful start.
        EventLog.WriteEntry("Successful start.", EventLogEntryType.Information);
    }
    catch (Exception ex)
    {
        // Log the exception.
        EventLog.WriteEntry(ex.Message, EventLogEntryType.Error);
    }
}

private void DoWork()
{
    // Do the service work here...
}

4
投票

我收到此错误,这是因为硬盘驱动器已满。它可能是任何阻止服务运行的因素。


1
投票

我遇到了同样的错误,这是由于在 serviceInstaller.msi 上运行 installUtil.cmd 时未创建 dll 造成的。为了解决这个问题,我必须为我在项目中期望的每个 dll 包含其中一个 =>

<File Id="Interception" Source="$(var.SourceDir)\Microsoft.Practices.Unity.Interception.dll" />
并将其放置在我的 Service.wxs 文件中。就像这样=>
<Fragment><DirectoryRef Id="ApplicationDirectory"><Component Id="ServiceID" Guid="$(var.ServiceGuid)"> *here* <closing tags...>
。并确保所有 dll 都包含在安装程序 x 复制命令中:)

希望这有帮助!


1
投票

我可以通过调整服务属性来解决这个问题。

我注意到所有其他工作服务都使用“本地系统”作为“登录身份”,但有问题的服务使用“本地服务”。您可以通过转到服务列表,右键单击所需的服务,单击上下文菜单上的属性,然后将“登录身份”更改为“本地系统帐户”(如果与下图所示不同)来解决此问题。

enter image description here


0
投票

我在启动服务时遇到了同样的错误。当我检查应用程序日志时,错误与 telnet 相关。这意味着 telnet(23) 的端口已被另一个服务占用,此时需要转到资源管理器并检查正在使用 23 端口的服务并禁用该服务服务,然后相应的服务就可以毫无问题地启动。


0
投票

本地计算机上的 Windows Search 服务启动然后停止。如果其他服务或程序未使用某些服务,则会自动停止。

检查这个


0
投票

面对同样的问题,我在绑定中使用我的IP,并在更新后开始出现此异常。使用我的主机名而不是 IP 更新它以避免将来出现这种情况


0
投票

我重新启动了托管该服务的服务器并且它工作了。

© www.soinside.com 2019 - 2024. All rights reserved.