Запуск службы windows завершается ошибкой 1053

У меня есть служба windows, которая не запускается, давая ошибку "Ошибка 1053: служба не ответила на запрос запуска или управления своевременно".

запуск службы в моем отладчике работает нормально, и если я дважды щелкните по службе .exe на удаленной машине появляется окно консоли и продолжает работать без проблем - я даже вижу сообщения журнала, показывающие мне, что программа обрабатывает все так, как должно быть.

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

метод StartRoutine () службы impelmentation пуст, поэтому должен возвращаться "своевременно".

Я проверил журналы событий компьютер, и он не дает никакой дополнительной информации, кроме того, что он не слышал от службы в течение 30 секунд необходимого периода времени.

поскольку он работает на моей машине и в качестве исполняемого файла с двойным щелчком, как я могу выяснить, почему он не работает как служба?

О, И это .NET 2.0, поэтому на него не должна влиять ошибка 1.1 framework, которая проявила этот симптом (http://support.microsoft.com/kb/839174)

коробка Windows server 2003 R2 машина под управлением SP2.

10 ответов


может быть несколько вещей, и это может помочь получить трассировку стека на машине, демонстрирующей проблему. Существует несколько способов сделать это, но дело в том, что вы должны увидеть, где это не в коде.

вы можете сделать это с помощью удаленной отладки, но простая вещь может быть просто войти в журнал событий или журнал файлов, если у вас есть это. Буквально, помещая "WriteLine ("в class:: function ()") во всех частях кода, чтобы увидеть, сделали ли вы это там.

Это, по крайней мере, заставит вас смотреть в правильном направлении (что в конечном итоге является кодом).

обновление:

см. Microsoft как отлаживать службы Windows статья для деталей в устранении неполадок при запуске с помощью WinDbg.

этой вопрос подробности хорошие способы отладки служб, которые написаны .Сеть.


это вводящая в заблуждение ошибка. Вероятно, это необработанное исключение.

очистите обработчик OnStart (), затем попробуйте это в своем конструкторе...

    public MainService()
    {
        InitializeComponent();

        try
        {
            // All your initialization code goes here.

            // For instance, my exception was caused by the lack of registry permissions
            ;
        }
        catch (Exception ex)
        {
            EventLog.WriteEntry("Application", ex.ToString(), EventLogEntryType.Error);
        }
    }

теперь проверьте журнал событий в вашей системе на наличие ошибки приложения.


Я согласен со Скоттом, самый простой способ узнать, что происходит,-это поместить некоторые следы в код запуска (возможно, он даже не доходит до вашего кода запуска).

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


возможно, не хватает какой-то зависимости, попробуйте это :
- отменить вашу службу
- зарегистрируйтесь снова

Если сбой при регистрации означает, что отсутствует модуль.


Если StartRoutine пуст, вы, вероятно, начинаете его где-то еще.

IIRC вам нужно запустить рабочий поток, а затем вернуться из StartRoutine.


одна из проблем, которые могут привести к этой ошибке, если служба windows, которая должна быть развернута, состоит из некоторой ошибки i.e это может быть простая ошибка авторизации или что-то еще, как в моем случае я ссылался на некоторые папки и файлы для ведения журнала, которые не существовали, но при условии правильного пути к этим файлам и папкам он решил мою проблему.


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

Я писал службу прослушивания файлов. Как консольное приложение, он работал отлично. Когда я запустил его как службу, я получил ту же ошибку, что и выше. Чего я не знал (и многие статьи MSDN об услугах удобно опустить), так это то, что вы необходимо, чтобы ваш класс выполнялся из ServiceBase.Run( YourClassName ());. В противном случае ваше приложение выполняется и немедленно завершается, и поскольку оно завершилось, вы получаете ошибку выше, даже если ошибка или исключение не произошло. Вот ссылка на статью об этом. Он фактически обсуждает настройку вашего приложения для двойного использования-консольное приложение и служба:создать комбинированную командную строку / Windows service app


У меня была эта проблема, и источником моей проблемы был файл конфигурации. Я отредактировал его в блокноте, и блокнот добавил один специальный символ, который заставляет службу работать неправильно, потому что файл конфигурации был разрушен. Я увидел этот специальный символ в notepadd++ , и после его удаления служба начала успешно работать, как и предыдущая.


в моем случае правильная .NET framework не была установлена на сервере, на котором я устанавливал службу Windows.


еще одна причина - если вы скопируете DLL в режиме "отладка" в папку установки, эта проблема возникнет.Что вам нужно сделать, это запустить проект в режиме "Release" скопируйте DLL или непосредственно папку выпуска формы, а не папку отладки, и скопируйте эту DLL в папку установки,она будет работать.Вы можете увидеть уменьшение размера DLL, он не будет содержать каких-либо отладочных символов и тому подобное