我有一个webapp,它具有对别名目录的读/写/执行权限。当我在Visual Studio中处于调试模式时,以下语句有效:
Directory.Move("\\\\localhost\\Alias\\oldDirectory","\\\\localhost\\Alias\\newDirectory");
最终结果是,oldDirectory
现在是别名目录中的newDirectory
。
但是,当我在预生产中测试此代码时,我在别名目录中有oldDirectory
和newDirectory
。 Directory.Move
现在表现得好像只是将oldDirectory
复制到newDirectory
。
为什么会这样?
答案 0 :(得分:3)
这很可能是权限问题。
执行此命令的用户帐户可能具有“创建/写入”权限,但不具有别名目录中的“删除”权限。我会检查程序正在执行的用户帐户是否具有删除/删除子文件夹和文件权限。
修改强>
为了测试这个理论,我会暂时授予Users组对该文件夹的完全控制权,以查看问题是否消失。
答案 1 :(得分:0)
确保文件夹没有写保护,并且在您尝试移动文件夹时没有任何进程正在访问任何文件。
同时通过验证应用程序池正在运行的用户帐户,检查您是否向正确的用户授予了安全权限。
您可能还想考虑在本地IIS上进行开发以防止将来发生此类情况(我去过那里;不太好)
答案 2 :(得分:0)
我相信,而不是使用Directory
(这是静态的)我使用DirectoryInfo
解决了我的问题。我认为问题的核心是Directory
比DirectoryInfo
的实例做更多的安全检查。我仍然不清楚为什么会这样,但它似乎有效。