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