如果某些服务没有被其他服务使用,它们会自动停止

Posted

技术标签:

【中文标题】如果某些服务没有被其他服务使用,它们会自动停止【英文标题】:Some Services stop automatically if they are not in use by other services 【发布时间】:2011-09-15 09:50:12 【问题描述】:

尝试启动 Windows 服务时出现错误“”。

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

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

服务以本地系统登录。

欢迎任何意见!谢谢。

【问题讨论】:

【参考方案1】:

这通常是以下两种情况之一的结果 - (a) 您的 OnStart() 方法抛出异常或 (b) OnStart() 方法没有启动线程来完成工作。

如果问题是 (a),那么显而易见的解决方案是调试服务以找出问题所在。至少,在OnStart() 方法的内容周围放置一个try-catch 块,并在发生异常时将错误记录到系统事件日志中。然后您可以在 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...

【讨论】:

我也遇到了同样的错误,并从这个答案中得到了解决方案......谢谢。 是的,我在 Windows 事件日志中发现服务错误。 兄弟也更新答案。更正 EventLog 的拼写...。有用的答案,谢谢@MattDavis【参考方案2】:

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

【讨论】:

【参考方案3】:

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

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

【讨论】:

【参考方案4】:

由于在我的 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 复制命令中:)

希望这会有所帮助!

【讨论】:

【参考方案5】:

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

【讨论】:

【参考方案6】:

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

检查this out。

【讨论】:

以上是关于如果某些服务没有被其他服务使用,它们会自动停止的主要内容,如果未能解决你的问题,请参考以下文章

本地计算机上的MSSQLSERVER服务启动后又停止了。一些服务自动停止,如果它们没有啥可做的

某些服务在未由其他服务或程序使用时将自动停止

MySQL服务启动:某些服务在未由其他服务或程序使用时将自动停止

K3CloudMQ服务无法启动,提示:本地计算机上的k3cloudmq 服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止

使用 OWIN 将 Web API 托管为 Windows 服务

(MYSQL错误解决)本地计算机上的MYSQL服务启动停止后,某些服务在未由其他服务或程序使用时将自动停止