У меня проблема с удалением файла, но я получаю исключение.
if (result == "Success")
{
if (FileUpload.HasFile)
{
try
{
File.Delete(Request.PhysicalApplicationPath + app_settings.login_images + txtUploadStatus.Text);
string filename = Path.GetFileName(btnFileUpload.FileName);
btnFileUpload.SaveAs(Request.PhysicalApplicationPath + app_settings.login_images + filename);
}
catch (Exception ex)
{
Message(ex.ToString());
}
}
}
Также я должен отметить, что папка, из которой я пытаюсь удалить, полностью контролирует сетевые сервисы.
Полное сообщение об исключении:
System.UnauthorizedAccessException: доступ к пути 'C: \ Users \ gowdyn \ Documents \ Visual Studio 2008 \ Projects \ hybrid \ hybrid \ temp_loginimages \ enviromental.jpg' запрещен. в System.IO .__ Error.WinIOError (Int32 errorCode, String MaybeFullPath) в System.IO.File.Delete (String path) в hybrid.User_Controls.Imgloader_Add_Edit_Tbl.btnUpdate_Click (Отправитель объекта, EventArgs e) в C: \ Users \ Users Документы \ Visual Studio 2008 \ Проекты \ hybrid \ hybrid \ User_Controls \ Imgloader_Add_Edit_Tbl.ascx.cs: строка 242
Любые идеи?
c#
asp.net
io
unauthorizedaccessexcepti
Ник Гоуди
источник
источник
Ответы:
По методу File.Delete ...
UnauthorizedAccessException
Означает один из 4 -х вещей:источник
Path is a directory.
спасибо за этот совет :) Это помогло мне.У меня тоже была проблема, поэтому я споткнулся на этом посте. Я добавил следующую строку кода до и после копирования / удаления.
Удалить
копия
источник
Это старая проблема, но я столкнулся с ней во время поиска. Оказывается, я пропустил фактический компонент имени файла в пути сохранения для SaveAs ...
источник
Когда пользователь пытается подключиться к вашему веб-сайту, IIS назначает подключение учетной записи IUSER_ComputerName , где ComputerName - это имя сервера, на котором работает IIS. По умолчанию учетная запись IUSER_ComputerName является членом группы «Гости». Эта группа имеет ограничения безопасности. Попробуйте получить доступ к IUSER_ComputerName к этой папке
Вот очень хорошо описан ответ о безопасности IIS
Надеюсь это поможет
источник
Щелкните правой кнопкой мыши Visual Studio и выберите Запуск от имени администратора.
источник
Я получил ошибку, потому что я не понимал, что местом назначения должен быть файл. У меня была папка как второй параметр (который работает в cmd). и я получил,
Unhandled Exception: System.UnauthorizedAccessException: Access to the path is denied.
потому что C #File.Move
хочет, чтобы там находился файл, не только для первого параметра, но и для второго, и поэтому, если вы помещаете каталог в качестве второго параметра, он пытается записать файл, например,c:\crp
когда у вас есть каталог с именемc:\crp
.это было бы неправильно
File.Move(args[0],"c:\\crp");
Итак, это было бы правильно
File.Move(args[0],"c:\\crp\\a.a");
То же самое касается
File.Copy
источник
Если это веб-сайт IIS, в котором возникла проблема, проверьте свойство Identity дополнительных параметров для пула приложений, который используется сайтом или приложением. Вы можете обнаружить, что для него установлено значение ApplicationPoolIdentity, и в этом случае именно этот пользователь должен иметь доступ к пути.
Или вы можете пойти по старому стилю и просто установить для Identity значение Network Service и предоставить пользователю Network Service доступ к пути.
источник
Вам нужно изменить права доступа к папке, которую вы пытаетесь удалить из / сохранить в. Щелкните правой кнопкой мыши на папке и используйте вкладку «Безопасность», чтобы разрешить изменение прав для пользователя, под которым запускается ваше приложение.
источник
Я ударил то же самое. Убедитесь, что файл НЕ скрыт.
источник
Я также столкнулся с этой проблемой, когда мой оконный сервис начал генерировать исключение
В качестве решения я проверил учетную запись пользователя, связанную с моей службой, как показано на снимке экрана ниже.
Так что в моем случае это был сетевой сервис
А потом зашел в свойства папки чтобы проверить, существует ли связанная учетная запись пользователя на вкладке их разрешений. В моем случае его не было, и когда я его добавил, это исправило мою проблему.
Для получения дополнительной информации, пожалуйста, проверьте скриншот ниже
источник
та же проблема для меня, я указывал папку, а не файл.
поэтому убедитесь, что в пути, укажите путь + имя файла
источник
Проверьте свойства ваших файлов. Если проверен только для чтения, снимите флажок. Это была моя личная проблема с UnauthorizedAccessException.
источник
Я получил эту ошибку и решил ее всего за мгновение. Не знаю, почему все мои папки доступны только для чтения , Я отменил доступ только для чтения и применил его. Тем не менее, это все еще только для чтения. Поэтому я переместил файл в корневую папку, он работает - так странно.
источник
Исключение UnauthorizedAccessException выдается, когда операционная система отказывает в доступе из-за ошибки ввода-вывода или ошибки безопасности.
Если вы пытаетесь получить доступ к файлу или разделу реестра, убедитесь, что он не только для чтения .
источник
Если вы используете BitDefender, есть большая вероятность, что его безопасные файлы функция заблокировала вашу работу. Это форма защиты от вымогателей, которая поставляется с некоторыми из более продвинутых версий.
Обязательно предоставьте доступ к вашему приложению в BitDefender и повторите попытку.
Некоторые подробности можно найти на этой странице поддержки BitDefender .
источник
У меня была такая же проблема на недавно перемещенном веб-сайте на общем сервере. Решено с помощью панели веб-хостинга (DotNetPanel) установить true «разрешить запись». Поэтому, если вы находитесь на общем сервере, прежде чем просматривать весь код, стоит взглянуть на конфигурацию сервера и сэкономить много времени.
источник
Имейте в виду, что если вы пытаетесь найти путь к общей папке из своего кода, вам не нужно только давать надлежащие разрешения для физической папки через вкладку безопасности. Вам также необходимо «поделиться» папкой с соответствующим пользователем пула приложений через вкладку «Поделиться»
источник
Я столкнулся с этой ошибкой, потому что
Иногда , когда я путь с именем файла и
Combine
FileName = ""
Это
Path Directory
неfile
проблема, о которой говорилось выше.так что вы должны проверить,
FileName
как этоисточник
У меня была точная ошибка при удалении файла. Это была служба Windows, работающая под учетной записью службы, которая не смогла удалить документ .pdf из общей папки, хотя у нее был полный контроль над папкой.
Что мне помогло, так это переход на вкладку «Безопасность» в «Общая папка»> «Дополнительно»> «Поделиться»> «Добавить».
Затем я добавил служебную учетную запись в группу администраторов, применил изменения, после чего учетная запись службы смогла выполнить все операции со всеми файлами в этой папке.
источник
Для тех, кто пытается создать приложение UWP (Universal Windows), права доступа к файлам гораздо более ограничены и, по умолчанию, вообще запрещены. Он также заменяет разрешения пользователя системы. В основном вы будете иметь доступ к файлам только в
Вы можете прочитать больше здесь для получения подробной информации => https://docs.microsoft.com/en-us/windows/uwp/files/file-access-permissions
источник
В моем случае проблема была в Нортоне. Моя внутренняя программа не имеет надлежащей цифровой подписи, и когда она пыталась удалить файл, она выдавала исключение UnauthorizedAccessException.
Если он дает вам уведомление, вы можете обработать его оттуда. В моем случае он не дал уведомление, что я заметил. Итак, вот как удержать Нортона от блокировки программы.
источник
Я тоже столкнулся с той же проблемой при попытке сделать это после развертывания на сервере:
Я предоставил разрешение в IIS другой группе, включая администратора, и моя проблема была решена.
источник
Я обнаружил, что эта ошибка может возникнуть в режиме дизайна, а не? Режим выполнения ... Если вы делаете что-то, например, создаете член класса, который требует доступа к файлу .INI или .HTM (файл конфигурации, файл справки), вы можете НЕ захотеть инициализировать элемент в объявлении, но инициализировать его позже. в FORM_Load () и т.д ... Когда вы действительно инициализируете ... Используйте защитный оператор IF:
Это не позволит MSVS Designer пытаться создать файл INI или HTM, когда вы находитесь в режиме разработки.
источник
Я получил эту ошибку, когда попытался переименовать папку очень быстро после того, как она была перемещена или создана.
Простое
System.Threading.Thread.Sleep(500);
решил это:источник
В моем конкретном случае я неоднократно создавал и удалял 10000 папок. Мне кажется, что проблема заключалась в том, что, хотя метод
Directory.Delete(path, true)
возвращается, механизм операционной системы все еще может удалять файлы с диска. И когда я начинаю создавать новые папки сразу после удаления старых, некоторые из них все еще заблокированы, потому что они еще не полностью удалены. И я получаю System.UnauthorizedAccessException: «Доступ к пути запрещен».Использование
Thread.Sleep(5000)
послеDirectory.Delete(path, true)
решает эту проблему. Я абсолютно согласен с тем, что это небезопасно, и я никого не поощряю к его использованию. Я хотел бы, чтобы здесь был лучший подход к решению этой проблемы, чтобы улучшить мой ответ. Сейчас я просто даю идею, почему это исключение может произойти.источник
Сначала просто проверьте путь, если двоеточие (:) отсутствует или отсутствует после буквы диска. Если двоеточие не пропущено, вы можете проверить, предоставлены ли права доступа / записи для этого пути. У меня была та же самая проблема, и я только пропускал двоеточие, разрешение и все остальное было хорошо.
будет работать нормально, но,
выдаст вам ошибку отказа в доступе.
источник
Я пытался использовать System.IO.File.OpenWrite (путь)
и это не сработало, потому что я только передавал OpenWrite () путь к каталогу, но он требует путь до файла, который вы хотите записать. Таким образом, полный путь, включая filename.extension в конце, должен быть передан в OpenWrite, чтобы избежать UnauthorizedAccessException
источник
Я также наткнулся на этот пост, как имеющий дело с той же проблемой. Похоже, файл используется и, следовательно, не может записать в него. Хотя не в состоянии понять, какой процесс его использует. Вышел из системы другой пользователь, который вошел в этот ящик, не видит пользователей, которые его держат. Любые быстрые советы относительно того, как найти то же самое.
Спасибо, Лакшай (разработчик)
источник
Чтобы решить эту проблему, я придерживаюсь подхода Скотта Хансельмана в статье « Отладка System.UnauthorizedAccessException» (часто сопровождается: доступ к пути запрещен) , код с примером приведен ниже:
источник