2015-10-13 1 views
0

У меня есть служба Windows, которую я развертываю с помощью осьминогов. Развертывание работает нормально в течение 90% времени. Если я развожу службу рано утром, я получу «Услуга не ответила на запрос запуска или контроля своевременно». ошибка. Если я снова запустил повторное развертывание с Octopus, это сработает.Прерывистая ошибка. Служба не ответила на запрос запуска или управления своевременно.

Я пробовал следующее предложение, найденное в Интернете уже.

  1. Убедитесь, что служба остановлена, изменив сценарий powershell для Octopus. Это приведет к остановке службы, прежде чем перенастроить ее. Мы подозревали, что служба не закрылась правильно.

    #ensure that the service was stopped. 
    Stop-Service $ServiceName 
    do { 
        Write-Host "Service not stopped yet...pausing execution for 200 ms" 
        Start-Sleep -Milliseconds 200 
        } until ((Get-Service $ServiceName).status -eq 'Stopped') 
    
    
        & "sc.exe" config $service.Name binPath= $fullPath start= auto |  
    
  2. Увеличьте время ожидания в OnStart метода для службы

    protected override void OnStart(string[] args) 
    { 
        _eventLog.WriteEntry(_source, "Starting service...", EventLogEntryType.Information); 
    
        //adding this to ensure there is enough time to start the service. 
        this.RequestAdditionalTime(60000); 
        new TaskFactory().StartNew(() => Start(_cancellationToken.Token), TaskCreationOptions.LongRunning); 
        IsComplete = true; 
    } 
    

Как я уже говорил, если развернуть службу после ошибки, то он работает. Ошибка возникает только после того, как служба работает в течение некоторого времени, например, не менее 2 часов. Если я разворачиваюсь назад каждые 10 минут, ошибка не отображается сама.

Пожалуйста, помогите

ответ

0

Итак, мне удалось отследить мою проблему. Наш сервис зависит от WinHTTP Web Proxy Auto-Discovery Service, эта услуга по какой-то причине прекращается после определенного количества времени простоя. Поэтому, когда мы развертываем наш сервис, эта служба не запускается, и тогда должно быть выбрано исключение. Мы не видели исключения, потому что он был проглочен попыткой поймать.

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

 Смежные вопросы

  • Нет связанных вопросов^_^