我有一个使用章鱼部署的Windows服务。部署在90%的时间内正常运行。如果我在早上部署服务,我会得到“服务没有及时响应启动或控制请求”。错误。如果我再次从Octopus运行相同的部署,那就可以了。
我已尝试在网上找到以下建议。
确保服务停止更改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 |
增加服务的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 :(得分:0)
好的,所以我设法追查我的问题。我们的服务依赖于 WinHTTP Web代理自动发现服务,此服务在一定数量的空闲时间后因某种原因而停止。因此,当我们部署我们的服务时,此服务未运行,然后应该抛出异常。我们没有看到异常,因为它被try catch吞噬了。
我将此服务添加为我们服务的依赖项,现在它每次都在运行。希望这可以帮助将来的某个人。