Muk*_*thi 7 windows-services topshelf c#-4.0
我已经使用 Topshelf 开发了一个 Windows 服务。它在本地运行良好。当我部署测试并尝试启动服务时,它给了我以下错误:
Error 1053: The service did not respond to the start or control request in a timely fashion.
Run Code Online (Sandbox Code Playgroud)
测试服务器在 Windows Server 2012 上运行。
这是我的服务启动和停止方法:
public void Start()
{
_logProvider.Info("Service started.");
StartScheduledJobs();
}
public void Stop()
{
_scheduler.Shutdown(true);
_logProvider.Info("Service stopped.");
}
private void StartScheduledJobs()
{
try
{
_scheduler.Start();
ScheduleDeleteJob();
}
catch (Exception ex)
{
_logProvider.Error("", ex);
}
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助我解决解决方案的原因是什么?
谢谢
在尝试了所有其他解决方案但没有成功后,我找到了一个解决方案,它用相同的错误消息解决了我的问题。
public static int Main(string[] args)
{
Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory);
//...
}
Run Code Online (Sandbox Code Playgroud)
基于https://github.com/Topshelf/Topshelf/issues/473
问题是您正在该Start()方法中启动服务的工作。
这在开发过程中工作正常,但当您安装服务时,服务控制管理器会调用 Start 并等待 30 秒以使其返回 - 如果返回,则认为该服务已成功安装。
但是,因为您在 Start 方法中启动了计划的作业,所以它不会在该时间内返回,并且您会收到此错误。
解决方案是在 Start 中间接启动工作,然后返回 - 启动一个专用线程来执行此操作,或者使用计时器,有很多选择。
| 归档时间: |
|
| 查看次数: |
7088 次 |
| 最近记录: |