0
我遇到了Windows服务的问题 - 部署后service_Start
尝试失败(超时)。第二次尝试主要成功。 我试着增加超时但它没有帮助。 该服务没有依赖关系。在部署后启动服务命令失败
这是一个c#
+ Topshelf (latest)
应用程序,它使用Castle.Windsor (2.5.3)
容器。 实施IMyService
的主要类已注册到lifestyleType Singleton
。 其他依赖项被注册为transient
。
该服务正在读取Rabbit总线上的消息并将其存储在Couchbase中。
配置代码如下所示:
HostFactory.Run(x =>
{
x.Service<IMyService>(s =>
{
s.ConstructUsing(name => WindsorContainerContext.Container.Resolve<IMyService>());
s.WhenStarted(s => s.Start());
s.WhenStopped(s =>
{
s.Stop();
WindsorContainerContext.Container.Release(s);
WindsorContainerContext.Container.Dispose();
});
});
x.RunAsLocalSystem();
x.SetDescription(serviceDescription);
x.SetDisplayName(serviceDescription);
x.SetServiceName(serviceName);
});
我想,也许事情没有得到正确释放,并导致启动失败,但毕竟已经尝试了一些变化我真的没有想法什么别的尝试。
我知道这可能不足以解决问题 - 请告诉我哪些信息会有帮助。我真的很想知道这里发生了什么,所以我也很感激你能否指出我在调试这个方面的正确方向。
您似乎没有权限方面的问题,因为服务在第二次尝试时按预期工作。我建议您调试服务的启动方法,因为通常超时是由此方法中的代码引起的。 – 2013-02-27 14:54:56
@Kokulan - 我不太清楚在调试时如何使它失败,直到现在我无法在调试模式下发生任何故障。启动方法启动一个新任务,开始从总线上消费消息并将其保存到Couchbase。没有太多内容,所有内容都很好地包装在try/catch块中,所以无论发生什么异常,都应该处理它们。 – 2013-02-27 16:15:41
您可以在start方法中将活动和时间记录到日志文件中。我通常在启动方法中写入主要活动以记录文件,并查看发生了什么,因为在调试过程中不容易捕获所有事件。你可以比较第一次和后来的开始日志。希望能帮助到你。 – 2013-02-27 16:24:49