我有一个.Net框架1.1 Windows服务,可以在一台服务器上运行,但另一台服务器上没有调用OnStart方法。我有一个Trace语句作为OnStart覆盖中的第一行,它没有被执行。不会抛出任何异常,Windows服务控制管理器认为该服务已正确启动。
任何人都知道什么可以阻止OnStart方法被调用?
编辑:这是跟踪输出的.config设置。
<configuration>
<system.diagnostics>
<trace autoflush="true" indentsize="4">
<listeners>
<add name="LogFileWriter" type="System.Diagnostics.TextWriterTraceListener,System"
initializeData="c:\interface.log" />
</listeners>
</trace>
</system.diagnostics>
</configuration>
答案 0 :(得分:0)
如果正在调用OnInit,则覆盖它并自己设置处理程序
protected override void OnInit(EventArgs e) {
this.Start += new System.EventHandler(OnStart);
base.OnInit(e);
}
如果未调用OnInit,则将AutoEventWireup =“true”添加到&lt;%@ Page部分可能会有所帮助。
答案 1 :(得分:0)
如果您正在将跟踪写入EventLogTrace侦听器,则第二台计算机上的服务帐户可能没有足够的权限来访问事件日志。看看我对这个问题的回答:
Windows Service running but event logs not working
OnStart事件中发生了哪些事件表明事件未触发?
答案 2 :(得分:0)
对于阻止服务实例的构造函数运行的单个服务器,这最终成为一个非常模糊的问题。