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

时间:2011-06-15 10:05:03

标签: c# windows service windows-services

错误“某些服务在尝试启动Windows服务时自动停止,如果它们不被其他服务使用”。

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

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

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

服务以本地系统登录。

欢迎任何输入!谢谢。

6 个答案:

答案 0 :(得分:35)

这通常是两件事之一的结果 - (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...
}

答案 1 :(得分:3)

我收到了这个错误,那是因为硬盘已经填满了。它可能是阻止服务运行的任何东西。

答案 2 :(得分:0)

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

希望这会有所帮助!

答案 3 :(得分:0)

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

答案 4 :(得分:0)

启动并停止了本地计算机上的Windows搜索服务。如果某些服务未被其他服务或程序使用,则会自动停止。

选中this out

答案 5 :(得分:0)

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

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

enter image description here