c#自定义服务不能在2008服务器上启动
本文关键字:服务器 启动 2008 自定义 服务 不能 | 更新日期: 2023-09-27 18:06:49
我已经构建了一个小服务(c#,net 4)。在开发环境上进行了一些测试和调整后,我在自己的pc上尝试了它。一切正常
当我在windows 2008 R2服务器(生产环境)上安装服务时,它不会开始给我一个1053错误(服务没有及时启动时间)
奇怪的是,当我启动服务时,我突然得到这个错误,就在一两秒钟之后。我在我的服务中添加了this.RequireMoreTime(120000)选项,并编辑了ServicePipelineMode的注册表项。
更多信息:
- 我正在使用Log4net来记录应用程序日志中的事件。
- 我使用自定义源(使用powershell命令创建)
- 服务设置在网络服务帐户下运行,用管理帐户启动它得到相同的结果
- 我已经把每个部分的Try - catch使用log.error(exception.tostring()),但没有记录在事件日志。
- 我在网上读了很多帖子,但是没有什么能帮助我修复。
-
开发和服务器有相同的框架:
如有任何帮助,不胜感激。
提前感谢。
编辑:
我试着在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来记录事件(在开发环境中它工作得很好)。
谢谢你的建议。我的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());
}
}
正如你所看到的,没有什么奇怪的事情发生,我应该在应用程序日志中看到一个开始消息。