我如果目录存在的代码行检查,然后让在它的文件列表。
System.IO.Directory.Exists(@"\\Server\Folder\");
我的作品时,我测试(从Visual Studio运行),但是当我部署的网站,它始终返回false。
我做同样验证另一个文件夹,另一台服务器上(假设服务器2),它工作正常。
那么我认为这是一个接入问题,但该共享文件夹和网络都获得大家......难道还有其他原因,它不会工作?
我如果目录存在的代码行检查,然后让在它的文件列表。
System.IO.Directory.Exists(@"\\Server\Folder\");
我的作品时,我测试(从Visual Studio运行),但是当我部署的网站,它始终返回false。
我做同样验证另一个文件夹,另一台服务器上(假设服务器2),它工作正常。
那么我认为这是一个接入问题,但该共享文件夹和网络都获得大家......难道还有其他原因,它不会工作?
当您运行Visual Studio中的代码,它运行在您的用户的权限。
当在IIS中运行代码运行的应用程序池的身份在默认情况下是内置的用户“网络服务”,这是不具有本地机器外部访问本地用户帐户。
在网络共享上的权利是第一层,之后在目录中的NTFS权限检查。
您需要具有同样的权利,你的用户更改应用程序池的标识域用户。
我可能有点晚,但我发现,没有对这种方法的问题Directory
类。 相反,我使用DirectoryInfo
与模拟这种方式:
new DirectoryInfo(path).Exists
这样你避免整个身份变化问题,这是由我们的IT领域拒绝。
我希望这可以帮助别人!
对于未来的参考,这也适用:
bool result = false;
try
{
Directory.GetAccessControl(path);
result = true;
}
catch (UnauthorizedAccessException)
{
result = true;
}
catch
{
result = false;
}
我在收到此错误代码放入一个UNC是这个样子:
@ “\ Server01上\ C $ \ DATA \子文件夹”
我做了一个明确的份额,并摆脱了的c$
,并使它看起来就像这样:
@ “\ Server01上\海图\子文件夹”
并开始工作。
我不是100%确定那是什么固定的权限问题,但它开始做出这样的转变后立即开展工作。