ASP.NET:试图重命名文件,但得到“”;访问路径“;被拒绝的错误
本文关键字:访问 路径 错误 拒绝 NET 重命名 文件 ASP | 更新日期: 2023-09-27 18:24:45
奇怪的是像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" );
并调试此行以查看目录和文件是否都正确。