2013-06-12 55 views
0

我一直在阅读关于FileSystemWatcher的这方面和其他方面,并且仍然无法找到解决方案。FileSystemWatcher在一台服务器上观看另一台服务器上的文件夹

问题: FileSystemWatcher的是一台服务器(prodserver1)上运行,并且在寻找另一台服务器上(prodserver2)的文件夹,并得到以下错误:

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

此服务创建多个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服务登录到我的帐户我一直在拉这些f老年人和映射本地驱动器。我去服务 - >属性 - >登录选项卡 - >登录为:这个帐户检查,(当我使用我的.net帐户我有权访问被拒绝,当我用我的prod员工id它接受它,但然后我得到无效的目录)浏览并从我们的AD中选择我的员工ID - >应用 - >确定。这一个被接受。当我开始服务时,会收到上述错误。有人告诉我,它仍然是一个权限问题。任何帮助将不胜感激。

回答

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密码,去登录到服务器我想让我的文件systemwatcher侦听,键入我的密码,并得到一个错误“无效的密码。”该服务器正在使用novell设置来验证用户,而不是我们的Windows设置。我让我们的信息安全团队将这两个账户合为一体,启动了服务并开始运作。另一个权限问题的例子。我的服务有一个有效的帐户,但不是该服务器的有效帐户。prodserv1上的Windows Service上有一个激活的filesystemwatcher,用于侦听prodserver2上的目录,并使用UNC路径工作。希望这有助于他人。

相关问题