私はCastle WindsorをIoCとして、TopShelfをサービスとして実行しています。コンソールアプリとして実行している場合、問題なく動作します。インストールしてサービスとして実行すると、しばらくすると「サービスが制御機能に応答していません」と表示されます。Windows 8/Windows Server 2012 のみ。Windows 7 でも問題なく動作します。
BuilContainer()を削除すると、すべてのプラットフォームで問題なく動作します。
また、BuildContainer の前に "a0" を記録し、その後に "a1" を記録するようにロガーを作成しました。「a0」はログに記録されますが、「a1」はサービスとして実行されている場合はログに記録されません。
このアプローチは、私を含む多くの人が使用しており、Windows 7 では機能しますが、Windows 8/Windows Server 2012 では機能しません。
BuildContainer(); // builds IWindsorContainer and registers component.
HostFactory.Run(x =>
{
x.Service<IService>(config =>
{
config.ConstructUsing(o => Container.Resolve<IService>("myService"));
config.WhenStarted(o => o.Start());
config.WhenStopped(o => {o.Stop(); Container.Dispose();} );
});
x.RunAsLocalSystem();
x.SetServiceName("ServiceName");
x.SetDescription("ServiceDesc");
x.SetDisplayName("ServiceDispName");
});
なにが問題ですか ?
ありがとう、ペイマン