错误“某些服务在尝试启动Windows服务时自动停止,如果它们不被其他服务使用”。
我有一个不使用Windows服务配置文件并使用静态属性的服务 - 它工作正常
现在,我使用app.config文件并重建我的安装项目+服务项目。现在我安装该服务,然后尝试启动该服务 - 我收到以下错误:
如果不使用其他服务,某些服务会自动停止
服务以本地系统登录。
欢迎任何输入!谢谢。
答案 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)