C# 事件日志ID 7039,则服务设置为运行和停止状态。但OnStart从未被调用
我使用microsoft示例创建了一个windows服务C# 事件日志ID 7039,则服务设置为运行和停止状态。但OnStart从未被调用,c#,windows,service,event-log,C#,Windows,Service,Event Log,我使用microsoft示例创建了一个windows服务 public MyService() { InitializeComponent(); } private void InitializeComponent() { this.eventLog1 = new System.Diagnostics.EventLog(); ((System.ComponentModel.ISupportInitialize)(this
public MyService()
{
InitializeComponent();
}
private void InitializeComponent()
{
this.eventLog1 = new System.Diagnostics.EventLog();
((System.ComponentModel.ISupportInitialize)(this.eventLog1)).BeginInit();
//
// eventLog1
//
this.eventLog1.Log = "Application";
this.eventLog1.Source = "MyService";
//
// MyService
//
this.CanHandlePowerEvent = true;
this.CanHandleSessionChangeEvent = true;
this.CanShutdown = true;
this.ServiceName = "MyService";
((System.ComponentModel.ISupportInitialize)(this.eventLog1)).EndInit();
}
protected override void OnStart(string[] args)
{
try
{
eventLog1.WriteEntry("Initializing...");
Init();
ServiceConfig.Settings.Initialize("MyService");
eventLog1.WriteEntry("Starting...");
//do some stuff
eventLog1.WriteEntry("Started");
}
catch (Exception ex)
{
eventLog1.WriteEntry("Error:" + ex.Message);
}
finally
{
base.OnStart(args);
}
}
此windows服务配置为在windows启动时自动启动。
几乎在任何地方,几乎总是一切正常,但在操作系统启动时,这项服务很少不启动。
在这些情况下,我总是在事件日志中发现相同的情况。
在应用程序日志上,我什么都没有,在系统日志上,我首先有事件ID 7039,然后是带有“MyService处于运行状态”的事件ID 7036,同时,但在此之后,另一个带有“MyService已停止”的事件ID 7036
相反,当一切正常时,我在系统日志上只有“MyService处于运行状态”,时间在我编写的所有应用程序日志之后,您可以在代码中看到
因此,我的观点是,在某些情况下它不起作用,服务控制管理器永远不会启动服务,OnStart方法也不会被调用。
所以这可能是操作系统的错。
你的意见是什么?
谢谢 是否将启动设置为自动(延迟启动)?否,仅为自动启动。您可以尝试将服务配置为依赖于Windows事件日志服务。我不认为这是必要的,但它可能值得检查。您还可以让您的服务在执行任何其他操作之前,在OnStart()中的不同位置(例如,main()函数、InitializeComponent()等)编写一个纯文本日志文件,并查看这是否为您提供了故障发生的线索。感谢您的建议,我会这样做,收到反馈后会尽快回来。启动是否设置为
自动(延迟启动)
?否,仅为自动。您可以尝试将服务配置为依赖于Windows事件日志服务。我不认为这是必要的,但它可能值得检查。您还可以让您的服务在不同的位置编写一个纯文本日志文件,例如,在执行任何其他操作之前,在OnStart()中的main()函数、InitializeComponent()等,并查看这是否为您提供了故障发生的线索。谢谢您的建议,我会提供这些建议,我会尽快得到反馈。