Windows服务未按预期工作

时间:2014-05-20 15:51:30

标签: .net service windows-services

我有一个Windows服务,用于轮询文件位置,当找到一些必需的文件时,它会发送电子邮件。这项服务已经存在了相当长的一段时间,并且一直运作良好,直到上周才发生故障。

维护一个日志来捕获移动到该位置的文件。当文件移动到该位置时,会在日志文件中生成一个条目。此外,当满足条件并发送邮件时,日志文件中还有一个条目,表示邮件已发送。同样,条目是在启动或停止服务时进行的。

自上周以来,该服务无法正常运行。没有发送邮件。我检查了SMTP服务器,一切都很好(由SMTP团队确认)。我检查了日志,并发现条目没有被记录。即使将文件移动到该位置,也不会在日志中捕获它。

我无法想到任何理由。我尝试过多次重启服务。

EDIT1

更多信息:

Windows服务是基于FileWatcher的服务。

EDIT2

此时我一直在使用共享路径来轮询文件。我尝试在3个不同的服务器上使用相同的路径。结果相同。然后我尝试使用本地路径(服务器的F驱动器上的路径),它按预期工作。但我仍然需要能够在共享路径中完成它。唯一共同的是共享路径!

1 个答案:

答案 0 :(得分:1)

如果您还没有更改代码,那么问题就是环境问题。最大的环境因素是运行Windows服务的用户帐户权限。如果是域帐户,它对磁盘的IO是否仍然有效?如果是本地帐户,是否更改了本地帐户策略以防止IO?您是否可以检查正在使用的文件系统上的有效权限,以确保Windows服务执行帐户具有正确的权限?

最后一件事(与您的问题没有直接关系)我为其他目的编写了一个相同的实用程序,因此请注意FileSystemWatcher不提供有保证的服务;在某些情况下,单个文件通知将转换为通用"某些文件已更改"通知,并且它在网络上的共享驱动器上不可靠。使用轮询任务可能更可靠,因为当你寻找变化时,你至少可以记录任何权限异常 - 目前我猜你根本就没有得到通知,你不知道为什么。