Доступ к пути запрещен
Я знаю, что этот вопрос задавался здесь много раз, но я не могу найти решение своей проблемы. Я пытаюсь сохранить изображение в папку в .net C#, но получаю это исключение:
Access to the path 'C:inetpubwwwrootmysiteimagessavehere' is denied.The error occured at mscorlib because at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode)
Я дал полный контроль над этой папкой (savehere)network service
и iis_iusrs
, даже дал полный контроль над everyone
но все еще получаю это исключение.
Я попытался дать доступ через explorer и через диспетчер IIS, все равно не повезло
Я делаю это на Windows server 2008 R2 и IIS 7.5, кто мне нужен дать доступ?
спасибо
18 ответов
вам нужно узнать из пула приложений для веб-сайта, под каким идентификатором он работает (по умолчанию это Application Pool Identity
) и предоставить соответствующие разрешения.
доступ к пути 'C:\inetpub\wwwroot\mysite\images\savehere-отказано! .. --2-->
внимательно прочитайте сообщение. Вы пытаетесь сохранить в файл с тем же именем, что и каталог. Это не может работать, вы не можете перезаписать каталог, заполненный файлами, одним новым файлом. Что бы вызвать undiagnosable потери данных, "доступ к пути запрещен" является файловой системой, которая борется, чтобы предотвратить это.
сообщение об исключении не идеально, но это происходит прямо из ОС, и они отлиты в камне. Платформа часто добавляет дополнительные проверки для создания лучших сообщений, но это дорогостоящий тест в сети. Perf-это тоже функция.
вам нужно использовать имя типа 'C:\inetpub\wwwroot\mysite\images\savehere\mumble - ... в JPG'. Считать путь.Combine () для надежного создания имени пути.
у меня была такая же проблема при попытке создать файл на сервере (собственно файл, который является копией шаблона).
вот полное сообщение об ошибке:
{ERROR} 08/07/2012 22:15:58 - System.UnauthorizedAccessException: Access to the path 'C:\inetpub\wwwroot\SAvE\Templates\Cover.pdf' is denied.
Я добавил новую папку под названием Templates
внутри папки приложения IIS. Одна очень важная вещь в моем случае заключается в том, что мне нужно было дать разрешение на запись (Gravar) для пользователя IUSR в этой папке. Вы также можете дать Network Service
и ASP.NET v$.#
то же самое написать разрешение.
после этого все работает как и ожидалось.
У меня была точно такая же проблема.
решение состояло в том, что файл, к которому я пытался получить доступ, был только для чтения, так как он был скопирован из файла шаблона, который был только для чтения.
у меня такая проблема, когда я пытаюсь сохранить файл без имени файла.
Код
File.WriteAllBytes(@"E:\Folder", Convert.FromBase64String(Base64String));
Код
File.WriteAllBytes(@"E:\Folder\"+ fileName, Convert.FromBase64String(Base64String));
какой идентификатор является пул приложений для веб-приложения, запущенного как, для устранения неполадок, попробуйте создать новый пул приложений с say Network Service в качестве его идентификатора и сделать ваше веб-приложение использовать этот новый пул приложений вы создали и посмотреть, если ошибка сохраняется.
совет не ответ на исходный вопрос этой темы, но может помочь некоторым другим пользователям, которые попадают на эту веб-страницу, после совершения той же глупой ошибки, которую я только что сделал...
Я пытался получить ASP.Net FileUpload управления для загрузки файла на сетевой адрес, который содержал "скрытая доля", а именно:
\MyNetworkServer\c$\SomeDirectoryOrOther
моя проблема была в том, что я должен был попросить доступ только для чтения:
FileStream fs = new FileStream(name, FileMode.Open, FileAccess.Read);
Я решил с помощью этой настройки:
IIS > пулы приложений > [ваш сайт] > Дополнительные параметры... > Identity > встроенный accound > LocalSystem
моя проблема была что-то вроде этого:
FileStream ms = new FileStream(path, FileMode.Open, FileAccess.ReadWrite);
но вместо использования пути я должен использовать файл.Полное имя... Я не знаю, поможет ли это кому-то еще, просто передавая свой собственный опыт с этой ошибкой!
измените настройку со встроенной учетной записи на пользовательскую и введите имя пользователя и пароль другого сервера.
держите настройку как интегрированную (вместо классического режима).
Создать Каталог savehere быть виртуальным каталогом и давать разрешение на чтение/запись с панели управления
имел каталог с тем же именем, что и файл, который я пытался написать, поэтому люди могут следить за этим.
я столкнулся с этой проблемой при разработке на моей локальной рабочей станции.
после нескольких безуспешных iisreset
призывы, я исправил эту ситуацию перезагрузка моя машина.
в ретроспективе открытый дескриптор файла, возможно, вызывал проблемы.
в моем случае мне пришлось добавить правило авторизации .NET для веб-сайта в IIS.
Я добавил правило, чтобы разрешить анонимным пользователям.
У меня была та же проблема, но я исправил ее, сохранив файл в другом месте, а затем скопировав файл и вставив его в то место, где я хотел, чтобы он был. Я использовал опцию для замены существующего файла, и это сделало трюк для меня. Я знаю, что это не самый эффективный способ, но он работает и занимает менее 15 секунд.
Я создал виртуальный dir с полным разрешением и добавил источник ffmpeg и видеофайлы там, так что, наконец, это имело смысл, поскольку это может быть acess кем угодно.