Windows服务不调用类库

时间:2012-02-24 19:11:19

标签: c# windows-services class-library

我有一个Windows服务覆盖OnStart和OnStop方法来调用类库。我正在使用生产者/消费者模型(请参阅http://www.albahari.com/threading/part4.aspx#_Wait_Pulse_Producer_Consumer_Queue了解我的想法/逻辑)。

我遇到的问题是由于某种原因,Action未正确运行。这是“(系统。)动作”代码(在timer_elapsed中):

_queue.EnqueueItem(() =>
{
    BuildFile file = new BuildFile();
    file.run();

    _writer.WriteLine("Gets Here: {0}", DateTime.Now.ToString());
    _writer.Flush();
});

正如您可能看到的那样,_writer基本上是一个“调试”日志记录工具。每当调用它时,它都会将该行写入文件(Windows服务运行计时器):

_timer.Interval = 30000; //(3600000)
_timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
_timer.Enabled = true;

对于测试,对BuildFile进行的第一次调用是对数据库的简单记录:

public BuildFile()
{
   logEntry("Success", "I'm Running...");
}

但是日志条目永远不会被写入(该方法在其他地方工作正常)。

最奇怪的部分是当我用Console应用程序包装类时,它工作正常。 Windows服务中的代码完全相同,但它不会触发BuildFile。

有没有人见过这样的东西?

1 个答案:

答案 0 :(得分:1)

控制台应用和服务应用最有可能在不同的帐户下运行。确保服务帐户有权访问文件系统路径。此外,如果您对数据库使用Windows身份验证,则还需要查看它。