繁体   English   中英

ASP.NET:尝试重命名文件但出现“访问路径”被拒绝的错误

[英]ASP.NET: Trying to rename a file but getting “Access to path” denied errors

奇怪的是,诸如System.IO.File.Delete()之类的东西可以工作,并且文件被删除,但是将为.Move()操作提供“拒绝访问路径错误”。 所有文件都位于同一文件夹中,用户“网络服务”具有该文件夹及其所有子文件夹的所有完全控制权限。

文件夹位于项目目录中,可以在解决方案资源管理器中看到。

异常详细信息:System.UnauthorizedAccessException:拒绝访问路径。

      foreach(var info in FileActions.Where(x => x.OldSortOrder != x.SortOrder))
    {
        string FileToRename;
        string NewName;
        string OldFilePath;
        string OldFileThumbPath;


            FileToRename = info.ProductID + "/" + info.OldSortOrder + "-" + info.ImageID + ".jpg";
            NewName = info.SortOrder + "-" + info.ImageID + ".jpg";
            OldFilePath = System.Web.HttpContext.Current.Request.MapPath("~/Content/ProductImages/"  + FileToRename);
            OldFileThumbPath = System.Web.HttpContext.Current.Request.MapPath("~/Content/ProductImages/" + info.ProductID + "/thumbs/" + FileToRename);

            System.IO.File.Move(OldFilePath, NewName);
            System.IO.File.Move(OldFileThumbPath, NewName);



    }

这是因为您映射了第一个文件的路径,而不是NewName的路径。

因此,没有完整的路径来知道要重命名/移动文件的内容,因此需要完整的路径才能正常工作。

如果没有路径,则可能尝试将其移动到可能没有此权限的asp.net池的默认文件夹中。

所以代码将是

NewName = System.Web.HttpContext.Current.Request.MapPath("~/Content/ProductImages/"  
     + info.SortOrder + "-" + info.ImageID + ".jpg" );

并调试此行以查看目录和文件是否正确。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM