Ninject StandardKernel.Get () молча завершается сбоем в службе Windows - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть этот код в функции Main () службы Windows:

        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 и подключиться к процессу, я перехожу через строку Logger = kernel.Get<INLogLogger>(); и это молча терпит неудачу. То, что я подразумеваю под молчаливым сбоем, - это то, что моя отладка VS просто останавливается без запроса или сообщения об ошибке.

Я вполне уверен, что правильно настроил привязку для моего INLogLogger, потому что это копирование и вставка из другой службы Windows, с которой у меня нет этой проблемы.

Чего мне не хватать? На что посмотреть?

...