Windows服务在重新启动后不会自动启动吗?


10

我们已经用.NET编写了一些Windows服务。它们可以在mmc服务中手动启动,但是尽管将其设置为“自动”,但是在打开(或重新引导)计算机电源时它们永远不会启动。

更新在事件日志中,没有看到“ xyz已启动”,而是看到所有其他服务都已启动,而是看到“ xyz服务已进入停止状态”。和一个单独的错误,指出“等待slsvc服务的事务响应时达到了超时(30000毫秒)”。

如果我手动启动它们,那么我将按预期在事件日志中获得一个正常条目,并且一切正常-直到下一个强制重新启动的Windows Update修补程序再次关闭了所有服务。

有任何想法吗?我尝试将它们设置为“延迟启动”,没有明显区别。


我曾经对某些计划任务有一个非常类似的问题,最终我发现可以通过更改任务在创建后运行的用户名来重新创建。我发现我只需删除并重新创建任务即可轻松解决问题。绝对值得采用类似的方法-尝试删除该服务并重新创建它。如果您不确定该怎么做,可能会有所帮助。仅供参考,计划任务问题不再发生,我想某些时候可以解决此问题。
DaveRandom 2012年

我想知道它们是否由于依赖于另一个服务(尚未启动)而无法启动。您是否可以在系统日志中看到服务启动失败?
newmanth 2012年

@DaveRandom重新安装实际上是在我们每次部署新版本时发生的,因此,不幸的是,删除/添加似乎并不能解决问题
James Crowley 2012年

@newmanth问题已更新,并提供了一些新的详细信息-原来我错过了一些事件日志条目
James Crowley 2012年

在您对Rob的回答的评论中,我注意到.NET是唯一的依赖项。您是否知道开发人员在服务的开发过程中是否使用了任何第三方API?如果是这样,也许有某种许可机制被阻止了?
newmanth 2012年

Answers:


3

有一个解决方法。请参阅:http : //support.microsoft.com/kb/922918

问题是,服务可能需要ldap或其他远程访问,因此会出现延迟。服务器启动时尤其可能发生这种情况。通过延长延迟时间,您可以确保服务将启动。

当然,更好的方法是解决为何启动此服务需要这么长时间的问题。您的环境没有变化吗?您是否因某个服务被延迟启动而轮询的服务出现性能问题?


服务启动具体如何进行故障排除?有什么方法可以启用详细日志记录吗?
肯尼·埃维特

1

当您说“我们有一些Windows服务”时,您是什么意思?那对我来说,它们是由您组织内的某个人内部创建的?如果是这样,那么您将比这里的其他任何人都更容易调试它们-这些服务对Windows组件有什么依赖性,您的程序员是否考虑过测试这些服务的可用性并在服务启动时等待它们上线? ?

您是否考虑过将这些服务设置为软件许可服务的依赖项(这就是slsvc)?

来自http://support.microsoft.com/kb/193888

若要创建新的依赖关系,请选择代表您要延迟的服务的子项,单击“编辑”,然后单击“添加值”。创建一个新的值名称“ DependOnService”(不带引号),其数据类型为REG_MULTI_SZ,然后单击“确定”。当出现“数据”对话框时,键入您希望在该服务之前启动的服务的名称,并在每行中输入一个条目,然后单击“确定”。

您将在“数据”对话框中输入的服务名称是该服务的确切名称,就像在注册表中“服务”项下显示的那样。

计算机启动时,它将使用此条目来验证是否尝试启动此值中列出的服务,然后再尝试启动从属服务。


谢谢Rob-它们是内部的-但唯一的依赖关系是.NET框架,我认为它不能作为服务运行。启动时不需要任何其他东西了
James Crowley 2012年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.