我在vb.NET中编写了一个Windows服务,使用Topshelf作为服务主机。 偶尔服务不会启动。在事件日志中,SCM写入错误7000和7009(服务未及时响应)。我知道这是一个常见的问题,但我(我想)我已经尝试了所有事情而没有结果。 该服务仅依赖于WMI,并且没有耗时的操作。 我读了这个问题(Error 1053: the service did not respond to the start or control request in a timely fashion),但没有一个答案适合我。
我试过:
此外:
我认为服务本身的代码不是问题,因为:
任何帮助都是受欢迎的,因为我完全没有想法,而且我已经对此感到满意超过15天......
答案 0 :(得分:0)
我遇到了7000
和7009
问题,由于A timeout was reached (30000 milliseconds)
与以下内容之间的配置错误,该问题立即失败(即使错误消息显示TopShelf
)。服务安装为。
最重要的是-您在HostConfigurator.SetServiceName(name)
中传递的内容必须完全匹配 已安装的Windows服务的SERVICE_NAME
。
如果它们不匹配,它将立即失败,并且您会收到两条事件日志消息。
答案 1 :(得分:0)
对我来说,7009错误是由我的NET核心应用产生的,因为我正在使用此构造:
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json");
在appsettings.json
中显然找不到和C:\WINDOWS\system32
文件。无论如何,将其更改为Path.Combine(AppContext.BaseDirectory, "appsettings.json")
解决了该问题。
更多一般帮助-与事件查看器不同,对于Topshelf,您可以添加自定义异常处理,在其中我终于找到了一些有意义的错误信息:
HostFactory.Run(x => {
...
x.OnException(e =>
{
using (var fs = new StreamWriter(@"C:\log.txt"))
{
fs.WriteLine(e.ToString());
}
});
});
答案 2 :(得分:-1)
安装Windows Creator版本更新后,我开始使用这项服务。基本上它使整个计算机变慢,这是我认为引发问题的原因。即使其中一个Windows服务存在超时问题。
我在网上学到的是服务的构造函数需要快速,但OnStart在SCM上有更多的余地。我的服务有一个C#包装器,它包含一个在构造函数中调用的InitializeComponent()。我把这个电话转移到OnStart上,问题就消失了。