【发布时间】:2014-11-14 09:18:47
【问题描述】:
我在安装 Windows 服务后遇到了一个奇怪的问题。
此 Windows 服务将每 5 分钟调用一次发送邮件的方法。
我使用 C# Visual Studio 2010 开发了 Windows 服务。
开发后,我采用了发布构建版本并安装在我的系统(即 Windows 7 操作系统)中,它可以正常工作。
一旦在 Windows server 2012 中完成相同的操作,就会安装该服务,但之后没有任何反应。
我目前使用过 System.Threading.Timer。即使我尝试使用 System.Timers.Timer。 这两个都可以在我的系统中工作,但不能在服务器中工作。
如果需要,我可以发布代码。
private Timer IntervalTimer;
protected override void OnStart(string[] args)
{
Server.WriteToLogFile("Windows Service started");
int loopTime = 5; //Every 5 Minutes
Server.WriteToLogFile("Loop Time : " + loopTime.ToString());
TimeSpan tsInterval = new TimeSpan(0, loopTime, 0);
IntervalTimer = new Timer(new TimerCallback(IntervalTimer_Elapsed), null, tsInterval, tsInterval);
}
private void IntervalTimer_Elapsed(object state)
{
Server.WriteToLogFile("Event Fired");
Library library = new Library();
library.Start();
}
【问题讨论】:
-
你有没有先验证服务是否启动?
-
是的,安装后我启动了服务,我有一个日志文件,还有我发现服务启动成功,但是之后什么都不会执行。
-
看来你将不得不调试困难的方式。将所有代码放在 Try Catch 块中。在每条语句之后写入事件日志。也许这会给你一些线索。还要检查电子邮件设置是否有任何问题。任何管理员权限问题?
-
您的代码中是否有日志记录? Timer.Elapsed 每 5 分钟触发一次吗?
-
是的,我有日志记录。此事件在 Windows Server 2012 中未触发,但在 Windows 7 中可以正常工作
标签: c# windows-services windows-server-2012