\FILESERVERMyFolder
有一个共享的网络文件夹。安全主体Everyone
在This folder, subfolders and files
上具有Full Control
。文件夹上没有DENY
权限。有三个用户,他们都可以使用文件资源管理器进入目录并创建一个名为test.txt
的文件。
此代码对其中两个用户运行良好:
string testLocation = @"\FILESERVERMyFolder";
string testFullPath = Path.Combine(testLocation, "test.txt");
Directory.CreateDirectory(testLocation);
bool exists = Directory.Exists(testLocation); // RETURNS TRUE!
File.Create(testFullPath); // For one user, this raises:
// System.IO.DirectoryNotFoundException: Could not find part of the path
// '\FILESERVERMyFoldertest.txt'
所以Directory.CreateDirectory
运行良好(文件夹已经存在(,但File.Create
似乎认为目录不存在。作为那个用户,我可以在资源管理器中键入\FILESERVERMyFolder
,查看那里的现有文件并创建新文件,没有问题。但在运行上面的代码时不会。
程序的进程是在有问题的用户下运行的。
这种情况只发生在网络路径上,而不是本地路径上如果将\FILESERVERMyFolder
更改为C:UsersUsernameDesktop
,则会创建该文件。
问题的背景是程序无法将XLSX文件导出到此特定用户的网络文件夹。在这种情况下,经过几天的研究,我试图解决这个问题,但一无所获:如果文件无法导出到网络文件夹,程序会将其导出到Desktop,然后尝试将其移动到网络文件夹。当然,程序在移动时会失败。我把它缩小到上面显示的片段。上面显示的代码与失败的代码完全相同,只是我更改了示例的服务器和文件夹的名称。
有什么想法吗?
重命名目录成功。该文件夹现在被命名为\FILESERVERMyFolderNew
,而不是\FILESERVERMyFolder
,并且它正在工作。如果我将文件夹重命名回MyFolder
,它将再次停止工作。
我没有时间深入挖掘。我只知道这个目录没有防火墙/防病毒规则。重命名文件夹对我们有效。