Windows服务无法访问UNC路径

时间:2013-05-13 21:14:48

标签: c# windows service unc

我在Windows Server 2012上运行用C#编写的Windows服务。该服务作为域用户运行,具有本地计算机的权限和对Isilon SAN上共享网络资源的NTFS权限。当以此用户身份登录时,我可以使用以下格式访问Windows资源管理器中的共享文件和目录:

\\isilon\path\to\dir\

但是,请致电

System.IO.Directory.Exists()

总是返回false。起初我以为是这样的: http://support.microsoft.com/kb/827421 但是,实施变通方法表明您可以使用

System.IO.Directory.GetDirectories()

只是访问目录(不先检查它们是否存在)。这只是抛出

System.IO.IOException: An unexpected network error occurred.

在同一网络上的另一台服务器(Windows 2008)上运行时,此相同的服务代码可以正常工作。

真正令人抓狂的是,如果我重启服务器,文件系统调用首先会成功。然后经过一段时间后,或者在从该计算机访问同一文件路径之后,程序化调用将开始失败并且永远不会再次自发成功。重新启动服务器可以在很短的时间内解决问题。

我完全难过,因为几乎没有必要重新启动Windows服务器实例。我不知道什么可能会影响文件共享权限或可访问性。也许它与Windows Server 2012上SMB 3.0的新实现有关?

编辑:好的,事实证明我并不疯狂。 OneFS的版本(在Isilon SAN上运行的FileSystem)与Windows Server 2012没有明确兼容。虽然它声称与SMB兼容。从OneFS版本6.5.5.14更新到6.5.5.20可以立即修复问题,并且自那以后一直稳定。

0 个答案:

没有答案