Windows服务在重启后无法自动启动

12

我的自动启动的Windows服务只在重新启动时无法启动。我用C#创建了一个Windows服务,并通过Wix创建的安装程序进行安装。该服务设置为自动启动。该服务安装并在NT AUTHORITY \ NETWORK SERVICE下运行。当服务启动时,它首先进行外部web服务调用。

在Windows 7中,我可以将服务设置为“延迟启动”,并且服务将在重新启动时启动,没有问题。但是,在Windows XP中,不存在此选项,当设置为自动启动时,由于以下原因,服务失败:

在等待MyService服务连接时达到了超时(30000毫秒)。

如果我尝试在登录过程后手动启动,则服务能够正常启动,仅在服务尝试自动重新启动时才存在问题,这使我相信有依赖服务需要添加到我的服务中以使其正确启动。

是否有人可以指向我正确的依赖项或替代方法?

2个回答

11

你可能存在依赖关系的竞争条件。你可以通过将服务配置为依赖于另一个服务(比如tcp/ip)来解决这个问题,但我建议重写你的服务,使其不需要在启动的关键执行路径中进行此调用。相反,它应该在稍后的某个时间点定期尝试进行WebService调用,并记录有用的消息,或者发送消息到任务栏实用程序等,如果存在需要解决的问题。


我考虑过两种做法。问题在于调用是为检索远程配置设置而进行的,并且作为 SettingsProvider 的扩展内置在设置中。 - Jared Knipp
1
抱歉,但这是必须完成的。基本设计在最好的情况下是脆弱的。Web 是无状态的,假设它是其他任何东西都是错误的。 - Christopher Painter
1
我采纳了你的建议,将我的OnStart()方法仅实现最基本的功能,并启动一个计时器以便稍后拉取配置设置并初始化服务功能。 - Jared Knipp

0

我在4台新服务器上遇到了同样的问题。我将W32服务设置为延迟自动启动,问题得到解决。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接