【问题标题】:Windows service installing in Windows server 2012在 Windows Server 2012 中安装 Windows 服务
【发布时间】: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


【解决方案1】:

在项目属性->构建选项卡->平台目标是-x86。所以它在 64 位操作系统的 windows server 2012 中给了我错误。现在我把它改成了anycpu,它工作得很好。

感谢您的建议。

【讨论】:

    【解决方案2】:

    除了目标平台之外,目标框架也很重要。如果您有针对 3.5 版的应用程序,请确保在服务器上启用了 .Net Framework 3.5 功能。否则,在尝试安装和启动系统服务时,您可能会遇到难以识别的错误循环。

    【讨论】:

      【解决方案3】:

      在我的情况下,我必须在管理员模式下使用命令提示符删除旧的 Windows 服务:

      SC DELETE <service name>
      

      然后按照 >>Nuthan Gowda 的说明重新构建应用程序,它就可以工作了。

      【讨论】:

        猜你喜欢
        • 2018-03-16
        • 2014-05-24
        • 1970-01-01
        • 2014-06-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多