Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows services 一台服务器上的FileSystemWatcher监视另一台服务器上的文件夹_Windows Services_Filesystemwatcher - Fatal编程技术网

Windows services 一台服务器上的FileSystemWatcher监视另一台服务器上的文件夹

Windows services 一台服务器上的FileSystemWatcher监视另一台服务器上的文件夹,windows-services,filesystemwatcher,Windows Services,Filesystemwatcher,我一直在这里和其他方面阅读有关FileSystemWatcher的文章,但仍然未能找到解决方案 问题:FileSystemWatcher正在一台服务器(prodserver1)上运行,正在查看另一台服务器(prodserver2)上的文件夹,出现以下错误: “无法启动服务。System.ArgumentException:目录名\prodserver2\Public\Synex\R1010\无效。 位于System.IO.FileSystemWatcher..ctor(字符串路径,字符串筛选器)

我一直在这里和其他方面阅读有关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\" />
            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");
        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;
<add key ="R1010Directory" value="\\prodserver2\Public\Synex\R1010\" />
<add key ="R2057Directory" value="\\prodserver2\Public\Synex\R2057\" />
<add key ="R2190Directory" value="\\prodserver2\Public\Synex\R2190\" />
FileListener.cs:

<!-- <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\" />
            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");
        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;
<add key ="R1010Directory" value="\\prodserver2\Public\Synex\R1010\" />
<add key ="R2057Directory" value="\\prodserver2\Public\Synex\R2057\" />
<add key ="R2190Directory" value="\\prodserver2\Public\Synex\R2190\" />
其他信息:

<!-- <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\" />
            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");
        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;
<add key ="R1010Directory" value="\\prodserver2\Public\Synex\R1010\" />
<add key ="R2057Directory" value="\\prodserver2\Public\Synex\R2057\" />
<add key ="R2190Directory" value="\\prodserver2\Public\Synex\R2190\" />

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

经过更多的研究,再加上一些普通的运气,我终于能够让它发挥作用了

使用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\" />
            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");
        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;
<add key ="R1010Directory" value="\\prodserver2\Public\Synex\R1010\" />
<add key ="R2057Directory" value="\\prodserver2\Public\Synex\R2057\" />
<add key ="R2190Directory" value="\\prodserver2\Public\Synex\R2190\" />

分辨率:

<!-- <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\" />
            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");
        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;
<add key ="R1010Directory" value="\\prodserver2\Public\Synex\R1010\" />
<add key ="R2057Directory" value="\\prodserver2\Public\Synex\R2057\" />
<add key ="R2190Directory" value="\\prodserver2\Public\Synex\R2190\" />
这里我们有两种类型的登录。“Windows 7用户”和“Novell用户”。我是Windows7用户,但他们有一个虚拟的novell帐户让我访问其他东西。所以今天是密码重置日。我重置了windows 7密码,登录到我想让我的filesystemwatcher监听的服务器,输入了我的密码,但出现错误“密码无效”。该服务器使用novell设置验证用户,而不是我们的windows设置。我让我们的信息安全团队将这两个帐户作为一个帐户进行同步,启动了这项服务,并且成功了。权限问题的另一个示例。我的服务有一个有效的帐户,但不是该服务器的有效帐户。prodserv1上的Windows服务上有一个已激活的filesystemwatcher,它正在侦听prodserver2上的目录,现在使用UNC路径工作。希望这能帮助别人