我是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");
});
出了什么问题?
谢谢, Peyman的
答案 0 :(得分:0)
很可能是某些事情让你的BuildContainer()
花了太长时间而且服务经理说,“呃,你太慢了”。将应用程序作为控制台运行时没有时间限制。我不确定Windows版本之间的时间限制是否有所改变,以说明为什么它只是在Win8 / 2012上出错。这些机器上的某些内容也可能使BuildContainer()
比旧系统花费更长的时间。
假设我是对的,你怎么解决它?如果不了解你在容器中做了什么,很难说。这看起来几乎与我的Topshelf服务看起来一样,所以你至少在正确的轨道上。也许你可以在容器中推迟到晚些时候做什么?