我是卡塞尔温莎作为我的IoC和TopShelf来运行它作为服务。当我将它作为控制台应用程序运行时,它工作得很好。当安装它并将它作为服务运行时,过了一会儿,它给了我“该服务没有响应控制函数”。仅在Windows 8/Windows 2012上。它在Windows 7上运行得很好。
当我删除BuilContainer(),时,它在所有平台上都能正常工作。
我还让我的记录器在BuildContainer之前记录"a1“,然后再记录”a1“。"a0“将被记录,但"a1”在作为服务运行时不会被记录。
包括me在内的许多人都使用这种方法,它在Windows 7上工作,但在Windows 8/Windows 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");
});怎么了?
谢谢,佩曼
发布于 2013-06-26 01:19:23
最有可能的事情是让您的BuildContainer()花费太长时间,服务经理在说,“嗯,您太慢了”。在将应用程序作为控制台运行时没有时间限制。我不确定Windows版本之间是否更改了时间限制,以说明为什么只在Win8 8/2012上出错。在这些机器上也有可能使BuildContainer()比旧系统花费更长的时间。
假设我是对的,你怎么解决呢?如果不理解你在容器里做什么是很难说的。这看起来几乎完全像我的顶级服务的样子,所以你至少在正确的轨道上。也许你可以把容器里的事情推迟到以后再做?
https://stackoverflow.com/questions/17305319
复制相似问题