部署后启动服务命令失败

时间:2013-02-27 14:44:54

标签: c# windows-services castle-windsor topshelf

我遇到了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);

            });     

我认为可能某些东西没有得到正确释放并导致启动失败但是在尝试了一些改变之后我真的没有想法还有什么可以尝试。

我知道这可能不足以解决这个问题 - 让我知道什么样的信息会有所帮助。我真的很想知道这里发生了什么,所以我也很感激你能否指出我在调试方面的正确方向。

1 个答案:

答案 0 :(得分:0)

因此,作为控制台应用程序,正常调试,您通常不会超时。

所以你可以请求更多时间,但我会开始请求20-30秒。如果您要求太多时间,服务经理会忽略您的请求而不会告诉您。