Ошибка 1053 служба не ответила на запрос запуска или управления своевременно
Я создал и установил сервис пару раз. Первоначально он работал нормально, но после некоторых изменений в Service Code он начал давать ошибку, когда я перезапускаю службу в Services.msc:
Ошибка 1053: служба не ответила на запрос запуска или управления своевременно
код:
public partial class AutoSMS : ServiceBase
{
public AutoSMS()
{
InitializeComponent();
eventLog1.Clear();
if (!System.Diagnostics.EventLog.SourceExists("MySource"))
{
System.Diagnostics.EventLog.CreateEventSource(
"MySource", "MyNewLog");
}
eventLog1.Source = "MySource";
eventLog1.Log = "MyNewLog";
Timer checkForTime = new Timer(5000);
checkForTime.Elapsed += new ElapsedEventHandler(checkForTime_Elapsed);
checkForTime.Enabled = true;
}
protected override void OnStart(string[] args)
{
eventLog1.WriteEntry("In OnStart");
}
protected override void OnStop()
{
eventLog1.WriteEntry("In onStop.");
}
void checkForTime_Elapsed(object sender, ElapsedEventArgs e)
{
string Time = "15:05:00";
DateTime dateTime = DateTime.ParseExact(Time, "HH:mm:ss",
CultureInfo.InvariantCulture);
if (DateTime.Now == dateTime) ;
eventLog1.WriteEntry(Time);
}
}
Вот мой основной код метода
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new AutoSMS()
};
ServiceBase.Run(ServicesToRun);
}
Я также пробовал следующие шаги:
- Перейдите в меню "Пуск" > "Выполнить" и введите regedit
- Перейдите к: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
- С выбранной папкой управления щелкните правой кнопкой мыши в панели справа и выберите новое значение DWORD
- Назовите новый DWORD: ServicesPipeTimeout
- Щелкните правой кнопкой мыши ServicesPipeTimeout и выберите команду Изменить
- Нажмите "Десятичный", введите "180000" и нажмите "ОК"
- Перезагрузите компьютер.
Я использовал для установки и удаления его с помощью следующей команды:
installutil AutoSMS.exe
installutil /u AutoSMS.exe
Ответы
Ответ 1
В моем случае я публиковал службу, пока она была в режиме отладки.
Решение было:
- Изменение решения для режима выпуска
- Удалите старую службу с помощью команды
InstallUtil -u WindowsServiceName.exe
- установка службы снова
InstallUtil -i WindowsServiceName.exe
Сработало отлично.
Ответ 2
Как отмечали другие, эта ошибка может иметь множество причин. Но в надежде, что это поможет кому-то, я поделюсь тем, что произошло в нашем случае. Для нас наша служба была обновлена до .NET 4.5, но на сервере не было установлен .NET 4.5.
Ответ 3
Я только что пробовал этот код локально в .Net 4.5, и служба запускается и останавливается правильно для меня. Я подозреваю, что ваша проблема может быть связана с созданием источника EventLog.
Метод:
EventLog.SourceExists("MySource")
требует, чтобы пользователь, запускающий код, должен был быть администратором, как описано в документации:
http://msdn.microsoft.com/en-us/library/x7y6sy21 (v = vs .110).aspx
Убедитесь, что служба запущена как пользователь с правами администратора.
Ответ 4
Я столкнулся с той же проблемой и не был уверен, как ее решить. Да, это происходит потому, что исключение выбрасывается из службы, но есть несколько общих рекомендаций, которые вы можете предпринять, чтобы исправить это:
- Убедитесь, что вы написали правильный код для запуска службы:
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new WinsowsServiceToRun()
};
ServiceBase.Run(ServicesToRun);
-
Вам нужно убедиться, что в классе WinsowsServiceToRun
существует какой-то бесконечный цикл.
-
Наконец, может быть какой-то код, который не записывает ничего и внезапно закрывает программу (что было со мной), в этом случае вам придется следовать старой школе отладки, которая должна была написать line к источнику (текст/db/где угодно). Я столкнулся с тем, что, поскольку учетная запись, на которой запущена служба, не была "Администратором", код просто падал и не регистрировал никаких исключений, если он пытался записать в "Журнал событий Windows", даже несмотря на то, что код был там для регистрации исключений, Права администратора фактически не нужны для входа в Even Log, но это необходимо для определения источника. В случае, если источник события еще не определен в системе, и служба пытается впервые зарегистрировать его без прав администратора, он терпит неудачу. Чтобы решить эту проблему, выполните следующие действия:
- Откройте командную строку с правами администратора
- Вставьте команду:
eventcreate /ID 1 /L APPLICATION /T INFORMATION /SO <<Source>> /D "<<SourceUsingWhichToWrite>>"
- Нажмите enter
- Теперь запустите службу
Ответ 5
Потратив некоторое время на проблему, попробовав решения, которые не сработали, я наткнулся на этот блог. Он предлагает обернуть код инициализации службы в блок try/catch, как это, и добавить EventLog
using System;
using System.Diagnostics;
using System.ServiceProcess;
namespace WindowsService
{
static class Program
{
static void Main()
{
try
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service1()
};
ServiceBase.Run(ServicesToRun);
}
catch (Exception ex)
{
EventLog.WriteEntry("Application", ex.ToString(), EventLogEntryType.Error);
}
}
}
}
Затем удалите старую службу, повторно разверните службу с этими изменениями. Запустите службу и проверьте журналы просмотра событий/приложений. Вы увидите, в чем заключается настоящая проблема, которая является основной причиной тайм-аута.
Ответ 6
Проведя слишком много времени на эту проблему. Я обнаружил, что EventLog
вызывает все эти беспорядки, хотя я использовал его правильно.
Кто бы ни занимался этой проблемой, я предлагаю вам избавиться от EventLog
.
Используйте лучшие инструменты, такие как " log4net".
Ответ 7
Именно из-за Microsoft Windows Service Control он иногда контролирует состояние служб. Если служба не отправит ответ через 30 секунд, вы получите эту ошибку.
Вы можете изменить реестр, поэтому у службы будет больше времени для ответа
Go to Start > Run > and type regedit
Navigate to: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
With the control folder selected, right click in the pane on the right and select new DWORD Value
Name the new DWORD: ServicesPipeTimeout
Right-click ServicesPipeTimeout, and then click Modify
Click Decimal, type '180000', and then click OK
Restart the computer
Или будьте уверены, что в тот момент нет другого процесса, говорящего с сервисом, возможно, есть конфликт, который я не знаю
Ответ 8
Я получал точно такую же проблему. Все, что я сделал, это изменить режим отладки на Release при компиляции dll. Это решило мой вопрос, как/почему? Я не знаю, что я уже спросил question в SO
Ответ 9
Проверьте ConnectionStrings
, если вы используете EntityFramework
или любые другие средства для запуска подключений к базе данных при запуске службы.
В моем случае, когда я получил ошибку Error 1053 the service did not respond to the start or control request in a timely fashion
, это то, что пошло не так:
Я использовал EntityFramework и неправильно использовал строки подключения. Таким образом, в основном при запуске EntityFramework не удалось подключиться к базе данных, используя неправильную строку соединения и время ожидания.
Просто нужно было заменить строку подключения к базе данных правильной, и она отлично работала.
Не требуется обновление фреймворка или каких-либо других изменений в системе/конфигурации.
Ответ 10
Это сработало для меня. В основном убедитесь, что пользователь Log on установлен вправо. Однако это зависит от того, как настроена инфраструктура учетной записи. В моем примере он использует учетные данные пользователя учетной записи AD.
В окне поиска в меню поиска найдите "Услуги",
-Инвестиции найдут требуемый сервис
щелкните правой кнопкой мыши и выберите вкладку "Вход в систему"
-Выберите "Эта учетная запись" и введите требуемый контент/учетные данные
-Откройте его и запустите сервис как обычно.
![введите описание изображения здесь]()
Ответ 11
Одно из возможных решений этой проблемы. [Исправлена проблема с моим концом, и мое приложение было JAVA):
1) проверьте, что ваше приложение указывает на правильную версию java (проверьте версию java и путь в вашем приложении).
ИЛИ
2) проверьте настроенную версию java. Убедитесь, что это 32-разрядная версия или 64-разрядная версия (на основе вашего приложения). если вы используете 32-битный, тогда вы должны использовать 32-битную версию JSL, иначе JSL вызовет эту проблему.
Ответ 12
Это обычно вызвано неперехваченным исключением в самой службе. (Например, ошибки в файле конфигурации). Открытие командной строки и запуск исполняемого файла службы вручную, возможно, показывают, что исключение было брошено.
Ответ 13
Я установил.Net 4.6 на моем компьютере с WindowsServer и исправлена ошибка.
Ваш контроль должен быть таким:
- Проверьте версию.net вашей WindowsService
- Затем проверьте версию.net вашего компьютера.
- Совместите эту версию, так как она, вероятно, не соответствует
Ответ 14
Я знаю, что это старый вопрос, я использовал для написания своей собственной службы Windows VB.NET, и у нее нет проблем для запуска в MS Windows 7 и MS Windows 10.
У меня есть эта проблема, когда я устанавливаю службы Windows на последнюю версию MS Windows 10. Причина, по которой служба Windows не запускается, заключается в том, что версия.NET, которая требуется для запуска оконных служб, не отображается на установленном ПК.
После установки служб Windows. перейдите в папку установки, например, C:\Program files (x86)\Service1\Service1.exe и дважды щелкните, чтобы запустить ее. Если отсутствует пакет.NET framework, он предложит пользователю загрузить его. Просто загрузите и дождитесь его установки.
После этого перезапустите службы windows в services.msc. Надеюсь, этот ответ поможет кому-то, кто столкнулся с проблемой. Я знаю, что проблема вызвана версией.NET framework.
Ответ 15
В моем случае проблема заключалась в настройке кэширования, установленной в файле App.config. После того, как я удалил строки из файла App.config, проблема была решена.
<cachingConfiguration defaultCacheManager="MyCacheManager">
<cacheManagers>
<add name="MyCacheManager" type="Microsoft.Practices.EnterpriseLibrary.Caching.CacheManager, Microsoft.Practices.EnterpriseLibrary.Caching, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
expirationPollFrequencyInSeconds="60"
maximumElementsInCacheBeforeScavenging="50000"
numberToRemoveWhenScavenging="1000"
backingStoreName="NullBackingStore" />
</cacheManagers>
<backingStores>
<add type="Microsoft.Practices.EnterpriseLibrary.Caching.BackingStoreImplementations.NullBackingStore, Microsoft.Practices.EnterpriseLibrary.Caching, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
name="NullBackingStore" />
</backingStores>
Ответ 16
Несмотря на то, что я собрал в Debug
, он сработал. Впоследствии после внесения изменений он дал эту ошибку при перезапуске. Я удалил некоторые из объектов в Debug file
, скомпилированные снова, и он сработал.
Ответ 17
Я удалил
EventLog.Exists
и зафиксировано.
Ответ 18
В моем случае у меня, видимо, были некоторые дополнительные символы в моем файле App.config, которые я не заметил при создании моего решения.
Поэтому я рекомендую сначала проверить файл конфигурации на наличие ошибок при изменении параметров реестра, переключении режимов конфигурации и т.д.
Ответ 19
У меня было две службы, которые были случайно связаны с одним и тем же EventSource eventLog.Source = "MySource";
После удаления обеих служб и повторной установки той, которая пострадала от ошибки 1053, моя служба запускалась нормально.
Ответ 20
По моему опыту, мне пришлось остановить мой существующий сервис для обновления кода. после обновления кода и во время START службы я получил ту же ошибку "Ошибка 1053, служба не ответила на запрос запуска или управления своевременно".
Но это стало проблемой после ВОССТАНОВЛЕНИЯ МАШИНЫ.
Ответ 21
Проверьте правильность кода запуска службы,
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new WinsowsServiceToRun()
};
ServiceBase.Run(ServicesToRun);
Также удалите все коды отладки. т.е.
#If Debug
...
...
...
#else
...
...
#endif
Ответ 22
У меня была такая же проблема. Снимите флажок "Спеть манифест ClickOnce", "Подписать сборку" и "Включить параметры безопасности ClickOnce" в свойствах проекта.
Ответ 23
Моя проблема была одна с appsettings.json
не копируя освободить папку сборки во время сборки и просто положить его в ...\bin\Release
папку и скопировать launchSettings.json
содержимое в appsettings.json
решить эту проблему для меня.
Ответ 24
В моем случае (что вряд ли будет вашим делом, поскольку я идиот), у меня есть привычка использовать начало Programs.cs для быстрого тестирования кода, который я собираюсь добавить в службу. На этот раз я забыл и оставил его. У тестируемого кода был "возврат" в конце.
Ответ 25
Я была такая же проблема. Похоже, при запуске службы основной поток не должен быть основным рабочим потоком. Простое создание новой темы и передача основной работы этой теме решило мою проблему.
Ответ 26
Убедитесь, что все настройки находятся в режиме выпуска, прежде чем создавать окончательную настройку (которая работает для меня)
Ответ 27
Я почесал голову, чтобы очистить эту ошибку Эта ошибка может быть вызвана, если вы отлаживаете ее в коде, как
static void Main()
{
#if DEBUG
MailService service = new MailService();
service.Ondebug();
#else
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new MailService()
};
ServiceBase.Run(ServicesToRun);
#endif
}
}
После очистки if,else
и endif
в коде, подобном этому, ошибка больше не появлялась.... надеюсь, это поможет....
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new MailService()
};
ServiceBase.Run(ServicesToRun);
}
Ответ 28
эта ошибка может быть вызвана различными причинами. чтобы определить причину, добавьте try/catch при запуске службы.
try
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service1()
};
<span class="skimlinks-unlinked">ServiceBase.Run(ServicesToRun</span>);
}
catch (Exception ex)
{
EventLog.WriteEntry("Application", ex.ToString(), <span class="skimlinks-unlinked">EventLogEntryType.Error</span>);
}
Ответ 29
Также вам необходимо проверить содержимое вашего файла конфигурации.
Вы должны проверить ниже раздел.
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"/>
</startup>
Поскольку вышеупомянутый раздел должен соответствовать вашему .NET Framework.
Ответ 30
В случае, если я столкнулся с этим утром, виновником был искаженный файл конфигурации. В файле конфигурации был закрытый тег комментария без открытого комментария. Итак, дважды проверьте ваши файлы конфигурации на наличие ошибок.