我已经建立了一个小服务(c#,net 4)。经过几次测试和开发环境调优后,我在自己的电脑上尝试过。一切正常。
当我在Windows 2008 R2服务器(生产环境)上安装服务时,它不会开始给我1053错误(服务无法及时启动)
很奇怪,当我开始服务时,我突然得到这个错误,就在一两秒之后。 我已将选项this.RequireMoreTime(120000)添加到我的服务中,并且我编辑了ServicePipelineMode的注册表项。更多信息:
Dev和server具有相同的框架:
任何帮助都将不胜感激。
非常感谢提前。
修改
我试图在program.cs上添加一个try-catch,这是我项目的起点:
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
static void Main()
{
try
{
if (!EventLog.SourceExists("CheckMail"))
{
EventLog.CreateEventSource("CheckMail", "Application");
EventLog.WriteEntry("EventSystem", "EventSource created");
}
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[] { new CheckMailSvc() };
ServiceBase.Run(ServicesToRun);
}
catch (Exception ex)
{
string message = string.Format("Error starting Service {0}", ex.ToString());
EventLog.WriteEntry("CheckMail", message, EventLogEntryType.Warning, 666);
}
}
}
没有任何东西被捕获(无论是EventSource创建事件还是异常)
所有其他代码都在try-catch中,使用log4net记录事件(在开发环境中它可以正常工作)。
答案 0 :(得分:0)
感谢您的建议。 我的OnStart是这样的:
protected override void OnStart(string[] args)
{
try
{
this.RequestAdditionalTime(30000);
ServiceStart = DateTime.Now;
XmlConfigurator.Configure();
log4net.ThreadContext.Properties["EventID"] = 666;
log.Info("Service Started");
StringBuilder sb = new StringBuilder();
sb.AppendLine("Service Configuration:");
log.Info(sb.ToString());
Timer t = new Timer(new TimerCallback(SendMail));
t.Change(TimeSpan.Zero, TimeSpan.FromMinutes(every));
}
catch (Exception ex)
{
log.ErrorFormat("Error starting service: {0}", ex.ToString());
}
}
你可以看到没有什么奇怪的事情发生,我应该在应用程序日志中看到一条启动消息。