我一直在这里和其他方面阅读有关FileSystemWatcher的内容,但仍然未能找到解决方案。
问题: FileSystemWatcher在一台服务器(prodserver1)上运行并查看另一台服务器(prodserver2)上的文件夹并收到以下错误:
“无法启动服务.System.ArgumentException:目录名称\ prodserver2 \ Public \ Synex \ R1010 \无效。 在System.IO.FileSystemWatcher..ctor(String path,String filter)“
此服务创建多个FileSystemWatchers。 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资源管理器中,我们没有任何问题。
服务OnStart:
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服务登录更改为我的帐户,我已经提取这些文件夹并映射本地驱动器。我去了服务 - &gt;属性 - &gt; LogOn选项卡 - &gt;登录为:此帐户已选中,(当我使用我的.net帐户时,我获得了访问被拒绝,当我使用我的prod员工ID时,它接受了它,但后来我获得了无效目录)浏览并从我们的AD中选择我的员工ID - &gt;申请 - &gt;好。这个被接受了。当我开始服务时,收到上面的错误。有些东西告诉我它仍然是一个权限问题。任何帮助将不胜感激。
答案 0 :(得分: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\" />
解决:强>
这里我们有两种登录方式。 “Windows 7用户”和“Novell用户”。我是一个Windows 7用户,但他们有一个虚拟的novell帐户供我访问其他东西。所以今天是密码重置日。我重置了我的Windows 7密码,登录到我希望我的filesystemwatcher监听的服务器,输入我的密码,并收到错误“密码无效”。该服务器使用novell设置来验证用户而不是我们的Windows设置。我让我们的信息安全团队将这两个帐户同步为一个,启动服务并且工作正常。权限问题的另一个例子。我的服务有一个有效的帐户,但不是该服务器的有效帐户。 prodserv1上的Windows服务有一个激活的filesystemwatcher,它在prodserver2上监听目录,现在使用UNC路径。希望这有助于其他人。