Запуск службы 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, он не будет содержать каких-либо отладочных символов и тому подобное