我有一个正在运行的 Windows 服务,它将文件从监视文件夹 (IO.FileSystemWacher) 移动到网络上的 UNC 共享。
网络共享是安全的,但共享对服务用户具有完全控制权;尽管如此,我还是遇到了找不到文件路径的问题。
我打算冒充服务(当前)用户,但不确定这是否是正确的方法。
想法?
我有一个正在运行的 Windows 服务,它将文件从监视文件夹 (IO.FileSystemWacher) 移动到网络上的 UNC 共享。
网络共享是安全的,但共享对服务用户具有完全控制权;尽管如此,我还是遇到了找不到文件路径的问题。
我打算冒充服务(当前)用户,但不确定这是否是正确的方法。
想法?
首先检查路径是你认为的。
要检查权限,您可以在服务帐户的身份下运行 Internet Explorer (do runas),然后将路径放在 URL 框中,以检查服务帐户是否可以访问该路径。
检查这些:
尝试授予运行该服务的计算机的计算机帐户对共享的访问权限。或者,在域帐户下运行服务(显然可以访问共享)
您如何访问共享?不是挂载目录吗?所以让我们说 \server1\direcotry1 安装到 z:\directory1 或类似的东西。如果是这样,您必须确保服务用户“看到”已安装的目录。或者使用标准 UNC 路径(使用 double \
)。
FileSystemWatcher 是否总是无法连接到 UNC 共享,还是在 watcher 运行后发生?
我已经看到,如果您重新启动监视文件夹所在的计算机,则在另一台计算机上运行的 FileSystemWatcher 将不再看到更改事件。要解决此问题,您需要重新启动观察程序。我相信您可以使用 EnableRaisingEvents 属性来执行此操作。