我有一个C#程序,它检查特定目录是否存在.
它只是做:
Directory.Exists(path).
Run Code Online (Sandbox Code Playgroud)
我也试过其他方法.使用DirectoryInfo并使用AlphaFS
在我的本地计算机上,路径存在.当我在具有相同凭据的服务器上运行相同的程序时,它不存在.
我想知道这是否是一个群体政策问题.但我能够上升到一个水平并看到它.
\ server\volume\share\sub目录 - 远程不存在但在我的桌面上它确实是 \server\volume\share - 我的桌面和远程服务器上都存在
更新 我忘记提及,因为我可以访问我的桌面,所以我获得了ACL信息.没有一个小组能够翻译.
我真的只是想让这个应用程序以与服务器上相同的方式运行,并找出它的行为方式不同.
更新2 这些是物理服务器.我的桌面是Liquid VDI
以下是代码:
var path = txtPath.Text;
using (var user = new Impersonation(fuserdomain, fc_user, fc_pass))
{
var alphaExists = Alphaleonis.Win32.Filesystem.Directory.Exists(path);
var alphaDIExists = new Alphaleonis.Win32.Filesystem.DirectoryInfo(path).Exists;
var SystemExists = System.IO.Directory.Exists(path);
var SystemDIExists = new System.IO.DirectoryInfo(path).Exists;
var AlphaHasFiles = false;
var AlphaDIHasFiles = false;
var SystemHasFiles = false;
var SystemDIHasFiles = false;
try
{
Directory.GetFiles(path);
AlphaHasFiles = true;
}
catch { }
try
{
new DirectoryInfo(path).GetFiles();
AlphaDIHasFiles = true;
}
catch { }
try
{
System.IO.Directory.GetFiles(path);
SystemHasFiles = true;
}
catch { }
try
{
new System.IO.DirectoryInfo(path).GetFiles();
SystemDIHasFiles = true;
}
catch { }
MessageBox.Show(string.Format("alphaExists: {0}\nalphaDIExists: {1}\nSystemExists: {2}\nSystemDIExists: {3}\nAlphaGetFiles: {4}\nAlphaDIGetFiles: {5}\nSystemGetFiles: {6}\nSystemDIGetFiles: {7}\n", alphaExists, alphaDIExists, SystemExists, SystemDIExists, AlphaHasFiles, AlphaDIHasFiles, SystemHasFiles, SystemDIHasFiles));
}
Run Code Online (Sandbox Code Playgroud)
更新3 虽然我已解决此问题; 我仍然不确定为什么我的台式机和服务器之间会有所区别.是否有任何工具可以帮助我了解问题所在?
我在 File.Exists 中看到了同样的情况。我从未找到答案并最终认输,我只是尝试使用它并捕获异常。
无论如何,健壮的代码必须捕获它,所有测试所做的就是避免尝试文件或目录不存在的情况。(而 PITA 表明 Visual Studio 不再以任何方式忽略某一行上的异常。运行时没有问题,开发中很烦人。)