簡體   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