Directory.Move在复制文件1失败时失败

时间:2018-01-29 13:12:07

标签: c# asp.net

我有一个ASP.NET MVC应用程序,托管在IIS 8,Windows Server 2012上,我将一些文件上传到临时目录。完成其他工作后,所有这些文件都将移动到具体目录。我的问题是为什么Directory.Move工作时不会FileInfo.CopyTo工作。

Directory.Move失败

  

"访问路径' serverPath ...'被拒绝。"

代码I用于移动整个目录:

 var pathFrom = Server.MapPath("~/Uploads/Objects/" + tempFolderName); //tempFolderName is a random generated GUID.
 var pathTo = Server.MapPath("~/Uploads/Objects/" + ObjectId); //ObjectId is an integer
 if (Directory.Exists(pathFrom))
     {
       Directory.Move(pathFrom, pathTo);
     }

要创建一个临时目录,我只需调用:Directory.CreateDirectory(path),它可以工作并创建临时目录,文件也保存在其中。

我用来逐个复制文件的方法:

public static void DirectoryCopy(string strSource, string Copy_dest)
        {
            DirectoryInfo dirInfo = new DirectoryInfo(strSource);

            DirectoryInfo[] directories = dirInfo.GetDirectories();

            FileInfo[] files = dirInfo.GetFiles();

            foreach (DirectoryInfo tempdir in directories)
            {
                Console.WriteLine(strSource + "/" + tempdir);

                Directory.CreateDirectory(Copy_dest + "/" + tempdir.Name);// creating the Directory   

                var ext = System.IO.Path.GetExtension(tempdir.Name);

                if (System.IO.Path.HasExtension(ext))
                {
                    foreach (FileInfo tempfile in files)
                    {
                        tempfile.CopyTo(Path.Combine(strSource + "/" + tempfile.Name, Copy_dest + "/" + tempfile.Name));

                    }
                }
                DirectoryCopy(strSource + "/" + tempdir.Name, Copy_dest + "/" + tempdir.Name);

            }

            FileInfo[] files1 = dirInfo.GetFiles();

            foreach (FileInfo tempfile in files1)
            {
                tempfile.CopyTo(Path.Combine(Copy_dest, tempfile.Name));

            }
        }

我试图让Directory.Move工作:

  1. 检查目录pathTo是否不存在
  2. 检查IIS是否具有所需权限:IISAppPool/DefaultAppPool具有对Uploads文件夹的完全访问权限。
  3. 尝试检查进程监视器是否出现任何其他错误,但似乎甚至没有记录。
  4. 关闭每个探险家。
  5. 任何人都能解释为什么Directory.Move无法正常工作(带有访问拒绝错误),同时逐个移动文件有效吗?

    Directory.Move是否需要更多权限,而不仅仅是逐个复制文件? 请注意,该应用程序不在wwwroot ...但在其他驱动器上。

    我已阅读的页面:

    Why am I still getting "Access to the path 'C:\...\...' is denied" even after granting IIS_IUSRS write permission on the directory?

    Access to path denied on IIS

    IOException access denied when Directory.Move subfolder and parent folder

    修改 使用FileInfo.Copy复制文件后,我删除了带有Directory.Delete(pathFrom, true);的tempFolder,这也适用。

0 个答案:

没有答案