.net - Topshelf超时问题

标签 .net windows-services topshelf

我们正在使用 Topshelf 托管服务。在启动服务之前,我们正在调用数据库来加载大量数据。因此,在启动服务时,我们收到以下错误:

Start Service failed with return code '[7] ServiceRequestTimeout

我们使用以下代码来启动服务:

HostFactory.Run(x =>
            {
                x.Service<AppService>(s =>
                {
                    s.ConstructUsing(name => new AppService(s_resolver, baseAddress, resolver));
                    s.WhenStarted(svc => svc.Start());
                    s.WhenStopped(svc => svc.Stop());
                    s.WhenShutdown(svc => svc.Shutdown());
                });

                x.EnableShutdown();
                x.RunAsLocalService();
                x.StartAutomatically();
                x.SetDisplayName("Application Host");
                x.SetDescription("Application Host");
            });

如果我尝试使用 Visual Studio 启动服务,服务运行正常。但是当该服务通过 Topshelf 托管时,我收到超时错误。

我还尝试使用hostControl.RequestAdditionalTime(TimeSpan.FromSeconds(300)) 但即使添加额外的超时时间后,我也无法解决该问题。请提出您的建议。

最佳答案

HostControl.RequestAdditionalTime 的文档是什么未能说明的是您最多只能要求 60 或 120 秒。否则它会忽略您的请求。

据我所知,它的记录非常出色:(如果您发现它在某个地方记录,请告诉我。

关于.net - Topshelf超时问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19589686/

相关文章:

c# - Windows 无法在本地计算机上启动服务错误 5 访问被拒绝

windows-services - 在Windows上安装mysql和未知选项

c# - 场景背景-启动wcf服务

powershell - 尝试通过 Powershell/MSBuild 远程停止时找不到服务

c#-4.0 - 启用 Topshelf 的 Windows 服务将无法调试

c# - JScript 中的异步

c# - 如何使用 Fluent Nhibernate 映射覆盖将子字符串映射到属性?

c# - 从同一项目访问 XSLT 文件作为资源?

java - 服务无法启动 : error 1067: the process terminated unexpectedly

c# - 我应该选择哪种加密哈希函数?