如果某些服务没有被其他服务使用,它们会自动停止
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 服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止