Ninject StandardKernel.Get()在Windows Service中静默失败

时间:2019-04-12 16:16:52

标签: windows-services ninject

我在Windows服务的Main()函数中有以下代码:

        if (!Environment.UserInteractive)
        {
            ServiceBase.Run(new Listener());
        }
        else
        {
            try
            {
                var listener = new Listener();
                listener.StartListener();
                Console.WriteLine("Press any key to stop...");
                Console.ReadKey(true);
            }
            catch (Exception ex)
            {
            }
        }

因此,如果我在VS中运行它,它将作为控制台应用程序运行(如果有所不同,请在2019年使用)。

这是侦听器的构造函数:

    public Listener()
    {
        kernel = new StandardKernel();
        kernel.Load(Assembly.GetExecutingAssembly());

        Logger = kernel.Get<INLogLogger>();

        InitializeComponent();
    }

    private INLogLogger Logger { get; }

当我将其作为控制台应用程序运行时,可以逐步执行它,并使Logger正常运行,但是当我使用PowerShell脚本将其作为Windows Service启动并附加到进程中时,我将跳过{{1} }行,它会自动失败。我的意思是静默失败是我的VS调试只是停止而没有提示我或没有显示错误。

我可以肯定我已经为我的INLogLogger设置了绑定设置,因为它是从另一个Windows Service复制和粘贴的,我们没有遇到这个问题。

我可能会缺少什么?有什么要看的吗?

0 个答案:

没有答案