Подтвердить что ты не робот

Ошибка 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
4b9b3361

Ответ 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 и исправлена ошибка.

Ваш контроль должен быть таким:

  1. Проверьте версию.net вашей WindowsService
  2. Затем проверьте версию.net вашего компьютера.
  3. Совместите эту версию, так как она, вероятно, не соответствует

Ответ 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

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