0

我一直在这里和其他方面阅读有关 FileSystemWatcher 的信息,但仍未成功找到解决方案。

问题: FileSystemWatcher 正在一台服务器 (prodserver1) 上运行并查看另一台服务器 (prodserver2) 上的文件夹并收到以下错误:

“服务无法启动。System.ArgumentException:目录名称 \prodserver2\Public\Synex\R1010\ 无效。在 System.IO.FileSystemWatcher..ctor(字符串路径,字符串过滤器)”

此服务创建多个 FileSystemWatcher。R1010 将替换为 R1011、R2121 等。所有这些目录都存储在 app.config 中。这是我的代码的样子:

应用程序配置:

<!-- <add key ="R1010Directory" value="H:\Synex\R1010\" />
<add key ="R2057Directory" value="H:\Synex\R2057\" />
<add key ="R2190Directory" value="H:\Synex\R2190\" /> -->
<add key ="R1010Directory" value="\\prodserver2\Public\Synex\R1010\" />
<add key ="R2057Directory" value="\\prodserver2\Public\Synex\R2057\" />
<add key ="R2190Directory" value="\\prodserver2\Public\Synex\R2190\" />

*请注意,我已尝试映射本地驱动器(H:已映射到 prodserver2\Public)。我们尝试了这条路线并得到了同样的错误。在 Windows 资源管理器中访问它,我们没有任何问题。

服务启动:

            FileListener R1010Listener = new FileListener();
            R1010Listener.ListenforFile(ConfigurationManager.AppSettings["R1010Directory"], "*", "R1010");

            FileListener R2057Listener = new FileListener();
            R2057Listener.ListenforFile(ConfigurationManager.AppSettings["R2057Directory"], "*", "R2057");

            FileListener R2190Listener = new FileListener();
            R2190Listener.ListenforFile(ConfigurationManager.AppSettings["R2190Directory"], "*", "R2190");

文件监听器.cs:

        FileSystemWatcher fileListener = new FileSystemWatcher(inputFileLoc, fileExtension);
        fileListener.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName;
        fileListener.IncludeSubdirectories = false;
        fileListener.InternalBufferSize = 65536;

        // Add event handlers.
        fileListener.Created += new FileSystemEventHandler(OnChanged);

        // Begin watching.
        fileListener.EnableRaisingEvents = true;

附加信息:

我们已将 Windows 服务登录更改为我一直在提取这些文件夹并映射本地驱动器的帐户。我去了服务-> 属性-> 登录选项卡-> 登录为:此帐户已检查,(当我使用我的 .net 帐户时,我获得的访问被拒绝,当我使用我的产品员工 ID 时它接受它,但随后我得到无效目录) 浏览并从我们的广告中选择我的员工 ID -> 应用 -> 确定。这个被接受了。当我去启动服务时,收到上述错误。有些东西告诉我它仍然必须是权限问题。任何帮助将不胜感激。

4

1 回答 1

0

经过一些更多的研究和一些简单的运气,我能够让它工作。

使用 App.Config:

<add key ="R1010Directory" value="\\prodserver2\Public\Synex\R1010\" />
<add key ="R2057Directory" value="\\prodserver2\Public\Synex\R2057\" />
<add key ="R2190Directory" value="\\prodserver2\Public\Synex\R2190\" />

解析度:

在这里,我们有 2 种类型的登录。“Windows 7 用户”和“Novell 用户”。我是 Windows 7 用户,但他们有一个虚拟的 Novell 帐户供我访问其他内容。所以今天是密码重置日。我重置了我的 Windows 7 密码,登录到我想让我的 filesystemwatcher 监听的服务器,输入我的密码,然后得到一个错误“密码无效”。该服务器使用的是 Novell 设置来验证用户,而不是我们的 Windows 设置。我让我们的信息安全团队将这两个帐户同步为一个帐户,启动了服务并且它起作用了。权限问题的另一个例子。我的服务有一个有效帐户,但不是该服务器的有效帐户。prodserv1 上的 Windows 服务有一个激活的文件系统观察器,它侦听 prodserver2 上的目录,它现在使用 UNC 路径工作。希望这对其他人有帮助。

于 2013-06-13T20:38:09.117 回答