C#学习教程:Directory.Exists不适用于网络路径分享


Directory.Exists不适用于网络路径

我有一行代码检查目录是否存在,然后获取其中的文件列表。

System.IO.Directory.Exists(@"\ServerFolder"); 

我在测试时工作(从visual studio运行),但是当我部署网站时,它总是返回false。

我对另一个文件夹,在另一台服务器(比如说Server2)上进行相同的validation,它运行正常。

然后我认为这是一个访问问题,但共享文件夹和网络可以访问所有人…还有其他原因导致它不起作用吗?

在Visual Studio中运行代码时,它将以用户的权限运行。

当您在IIS中运行代码时,它以应用程序池的标识运行,默认情况下,该应用程序池是内置用户“网络服务”,这是本地用户帐户,无法访问本地计算机。

网络共享上的权限是第一层,之后检查目录上的NTFS权限。

您需要将应用程序池的标识更改为具有与用户相同权限的域用户。

我可能有点晚了,但我发现Directory类的这个方法存在问题。 相反,我用这种方式使用DirectoryInfo模拟:

 new DirectoryInfo(path).Exists 

这样您就可以避免我们的IT领域拒绝的整个身份更改问题。

我希望这有助于某人!

对于将来的参考,这也有效:

上述就是C#学习教程:Directory.Exists不适用于网络路径分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—猴子技术宅(www.ssfiction.com)

 bool result = false; try { Directory.GetAccessControl(path); result = true; } catch (UnauthorizedAccessException) { result = true; } catch { result = false; } 

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/ckf/1031418.html

发表评论

邮箱地址不会被公开。 必填项已用*标注