Directory.Exists不工作的网络路径(Directory.Exists not work

2019-06-23 17:11发布

我如果目录存在的代码行检查,然后让在它的文件列表。

System.IO.Directory.Exists(@"\\Server\Folder\");

我的作品时,我测试(从Visual Studio运行),但是当我部署的网站,它始终返回false。

我做同样验证另一个文件夹,另一台服务器上(假设服务器2),它工作正常。

那么我认为这是一个接入问题,但该共享文件夹和网络都获得大家......难道还有其他原因,它不会工作?

Answer 1:

当您运行Visual Studio中的代码,它运行在您的用户的权限。

当在IIS中运行代码运行的应用程序池的身份在默认情况下是内置的用户“网络服务”,这是不具有本地机器外部访问本地用户帐户。

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

您需要具有同样的权利,你的用户更改应用程序池的标识域用户。



Answer 2:

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

new DirectoryInfo(path).Exists

这样你避免整个身份变化问题,这是由我们的IT领域拒绝。

我希望这可以帮助别人!



Answer 3:

对于未来的参考,这也适用:

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


Answer 4:

我在收到此错误代码放入一个UNC是这个样子:

@ “\ Server01上\ C $ \ DATA \子文件夹”

我做了一个明确的份额,并摆脱了的c$ ,并使它看起来就像这样:

@ “\ Server01上\海图\子文件夹”

并开始工作。

我不是100%确定那是什么固定的权限问题,但它开始做出这样的转变后立即开展工作。



文章来源: Directory.Exists not working for a network path