【问题标题】:FileSystemWatcher on one server watching folder on another server一台服务器上的 FileSystemWatcher 监视另一台服务器上的文件夹
【发布时间】:2023-03-06 15:37:01
【问题描述】:

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

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

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

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

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");

FileListener.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 -> 应用 -> 确定。这个被接受了。当我去启动服务时,收到上述错误。有些东西告诉我它仍然必须是权限问题。任何帮助将不胜感激。

【问题讨论】:

    标签: windows-services filesystemwatcher


    【解决方案1】:

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

    使用 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 密码,然后登录到我想让我的文件系统观察程序监听的服务器,输入我的密码,然后得到一个错误“密码无效”。该服务器使用的是 Novell 设置来验证用户,而不是我们的 Windows 设置。我让我们的信息安全团队将两个帐户同步为一个帐户,启动了服务并且它起作用了。权限问题的另一个例子。我的服务有一个有效帐户,但不是该服务器的有效帐户。 prodserv1 上的 Windows 服务有一个激活的文件系统观察器,它正在侦听 prodserver2 上的目录,并且它现在使用 UNC 路径工作。希望这对其他人有帮助。

    【讨论】:

      猜你喜欢
      • 2016-06-29
      • 2011-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多