为啥当我尝试移动目录时访问被拒绝?

Posted

技术标签:

【中文标题】为啥当我尝试移动目录时访问被拒绝?【英文标题】:Why is access denied when I try to move a directory?为什么当我尝试移动目录时访问被拒绝? 【发布时间】:2014-11-07 21:33:32 【问题描述】:

我有两个目录:folder1 和 folder2。 folder1 包含一个文件。我想将文件夹 1 移动到文件夹 2 下以生成文件夹 2\文件夹 1。当我尝试使用下面的 C# 代码执行此操作时,我得到:

System.IO.IOException:对路径“E:\www\dev\test\MoveDirectories\folder1”的访问被拒绝。

相关代码:

// In Page_Load.
MoveDirectory("folder1");

// Method for moving directories.
protected void MoveDirectory(string strMoveThis)

    try
    
        System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(Server.MapPath(strMoveThis));
        dir.MoveTo(Server.MapPath("\\folder2\\"));
    
    catch (Exception ex)
    
        Response.Write(ex);
    

我的 ASP.NET 4.0 应用程序池对文件夹 1 具有修改权限。这实际上是一个测试应用程序,其中的代码是从一个更大的应用程序中提取的,因此它没有预期的所有测试和异常处理。

编辑:我发现我可以在文件夹 1 中创建文件。

【问题讨论】:

文件是否可能被另一个进程锁定? 如果您打开了 File Exporer,请尝试关闭它。该过程可能会锁定文件夹。 @tezromania:我是这么想的,但我相信我已经关闭了所有可能使用该文件夹的进程。 可以手动移动吗?副本有用吗? 如果你调试你的程序直到代码中的错误行,然后一旦你的代码到达那个点,你仍然可以手动移动它吗?我很好奇您代码中的其他区域是否在执行期间锁定了文件夹 1 中的文件。 【参考方案1】:

我不想回答我自己的问题,但是...

基本上,我更新了这个:

dir.MoveTo(Server.MapPath("\\folder2\\"));

到这里:

dir.MoveTo(Server.MapPath("folder2\\" + strMoveThis));

相同的权限,但路径的形成更好。谢谢大家的帮助!

【讨论】:

以上是关于为啥当我尝试移动目录时访问被拒绝?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的视频会被拒绝访问?

为啥我在尝试通过 Matlab ftp 访问 Box 时收到“连接被拒绝”?

为啥有些文件拒绝访问

为啥我的 lambda 函数在尝试访问 S3 存储桶时会被拒绝访问?

在 MVC 中移动 javascript 后,Active 中的访问被拒绝

尝试通过 oauth 进行身份验证时访问被拒绝