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