关于这个话题,问题不在少数,但我仍然有困难。这是我的情况。我有一个服务,我需要监视配置文件中指定的路径。当我使用本地驱动器时,效果很好。
但是,当我将其更改为类似于\\server2\secondary\temp\watch_folder的内容时,服务不会启动。日志中的错误是
目录名\server2\secondary\temp\watch_folder无效。
如果我直接将其复制到Windows资源管理器中,文件夹就会很好地打开。如果我把我的代码粘贴到一个旧的Winforms应用程序中,它就能正常工作。我试过所有的“登录为”帐户。我将其设置为使用管理员帐户,但仍然没有骰子。
这是我的代码:
_watcher = new FileSystemWatcher();
_watcher.Path = ConfigurationManager.AppSettings["WatchFolder"];
_watcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName;
_watcher.Filter = "*.txt";
_watcher.Created += new FileSystemEventHandler(OnCreated);
_watcher.Error += new ErrorEventHandler(OnError);
_watcher.EnableRaisingEvents = true;有什么想法吗?我不知所措,在这一点上,我想我已经盯着它太久了。我衷心感谢任何帮助。
谢谢,尼克
编辑在这里是一个例外:
服务无法启动。System.ArgumentException:目录名\server2\Secondary\temp\watch_folder无效。 在System.IO.FileSystemWatcher.set_Path(字符串值) 在FileWatcher.FileWatcher.Watch() 在FileWatcher.FileWatcher.OnStart(String[] args) 在System.ServiceProcess.ServiceBase.ServiceQueuedMainCallback(Object州)
发布于 2012-06-27 16:53:58
我刚试过这个:
var _watcher = new FileSystemWatcher();
_watcher.Path = @"\\10.31.2.221\shared\";
_watcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName;
_watcher.Filter = "*.txt";
_watcher.Created += new FileSystemEventHandler((x, y) =>Console.WriteLine("Created"));
_watcher.Error += new ErrorEventHandler( (x, y) =>Console.WriteLine("Error"));
_watcher.EnableRaisingEvents = true;
Console.ReadKey();这是没有问题的,但是我在以下情况下复制了您的异常:
您的问题肯定与权限有关,我认为正在运行的用户没有所需的权限。
您可以尝试的另一件事是将远程文件夹映射到一个本地文件夹。
在cmd中执行此操作:
NET USE Z: \\server2\Secondary\temp\watch_folder /user:Domain\UserName Password然后在您的代码中:
_watcher.Path = @"Z:\";发布于 2012-06-27 13:39:06
您的服务可能运行在没有该共享权限的用户帐户下。尝试将windows服务更改为在不同凭据下运行。
发布于 2013-12-03 14:37:19
我找到了一种非常酷的方法,可以让UNC在codeproject上的windows服务中使用凭据。
见禤浩焯海斯帖子:http://www.codeproject.com/Articles/43091/Connect-to-a-UNC-Path-with-Credentials
他的解决办法很好。
https://stackoverflow.com/questions/11219373
复制相似问题