间歇性错误 - 服务未及时响应启动或控制请求

时间:2015-10-13 07:48:53

标签: windows-services octopus-deploy

我有一个使用章鱼部署的Windows服务。部署在90%的时间内正常运行。如果我在早上部署服务,我会得到“服务没有及时响应启动或控制请求”。错误。如果我再次从Octopus运行相同的部署,那就可以了。

我已尝试在网上找到以下建议。

  1. 确保服务停止更改Octopus的powershell脚本。这将等到服务停止后再重新配置。我们怀疑服务没有正确关闭。

    #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;
    }
    
  3. 就像我提到的,如果您在错误之后部署服务,那么它可以工作。该错误仅在服务运行一段时间后发生,例如至少2小时。如果我每10分钟背靠背部署一次,那么错误就不会自我呈现。

    请帮忙

1 个答案:

答案 0 :(得分:0)

好的,所以我设法追查我的问题。我们的服务依赖于 WinHTTP Web代理自动发现服务,此服务在一定数量的空闲时间后因某种原因而停止。因此,当我们部署我们的服务时,此服务未运行,然后应该抛出异常。我们没有看到异常,因为它被try catch吞噬了。

我将此服务添加为我们服务的依赖项,现在它每次都在运行。希望这可以帮助将来的某个人。