ASP.NET: Попытка переименовать файл, но получение «Доступ к пути» отклонено ошибки - PullRequest
0 голосов
/ 15 февраля 2012

Странно то, что что-то вроде 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);



    }

1 Ответ

3 голосов
/ 15 февраля 2012

Это потому, что вы отображаете путь для первых файлов, но не для NewName.

Таким образом, не было полного пути, чтобы узнать, как переименовать / переместить файл, и ему нужен полный путь для правильной работы.

Если путь не указан, попробуйте переместить его в папку по умолчанию для пула asp.net, который, вероятно, не имеет этих разрешений.

Таким образом, код будет

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

и отладьте эти строки, чтобы проверить правильность каталогов и файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...