Подтвердить что ты не робот

ASP.net Получение ошибки "Доступ к пути запрещен". при попытке загрузить файлы на мой веб-сервер Windows Server 2008 R2

У меня есть веб-приложение asp.net, которое загружает файлы в определенную папку на веб-сервере. локально все работает нормально, но когда я развертываю приложение на веб-сервере, я начинаю получать сообщение об ошибке "Доступ к пути" D:\Attachments\myfile.doc "запрещен". Я дал пользователю "IIS AppPool", что приложение работает под полным разрешением в папке. Я даже дал "Все" полные разрешения, но с той же ошибкой.

Я добавил папку в список исключений Антивируса, но с тем же результатом. Я начинаю подозревать, что, возможно, Windows Server 2008 R2 нуждается в трюке для моей загрузки на работу. Я очень ценю вашу помощь.

Спасибо

4b9b3361

Ответ 1

Ваша учетная запись asp.net {MACHINE}\ASPNET не имеет права на запись в это место. Именно по этой причине его неудача.

Рассмотрите возможность предоставления прав доступа ресурсу к идентификатору запроса ASP.NET.

Щелкните правой кнопкой мыши по загрузке папки Properties > Security Tab > Edit > Add > locations > choose your local machine > click OK > Type ASPNET below "Enter the object name to select" > Click Check Names Установите флажки для требуемого доступа (Full Control). Если это не сработает, сделайте то же самое с Network Service

Теперь это должно показать вашу локальную учетную запись {MACHINENAME}\ASPNET, после чего вы установите для нее разрешение на запись в эту учетную запись.

В противном случае, если приложение выдаст себя за помощью <identity impersonate="true"/>, идентификатор будет анонимным пользователем (обычно IUSR_MACHINENAME) или пользователем, прошедшим проверку подлинности.


Или просто используйте выделенное место для хранения файлов в ASP.NET, которое App_Data. Чтобы создать его, щелкните правой кнопкой мыши проект ASP.NET(в Visual Studio) Add > Add ASP.NET Folder > App_Data. Затем вы сможете сохранить данные в этом месте:

var path = Server.MapPath("~/App_Data/file.txt");
System.IO.File.WriteAllText(path, "Hello World");

Ответ 2

Щелкните правой кнопкой мыши на своей папке на своем сервере или на локальном компьютере и дайте полные разрешения

IIS_IUSRS

что он.

Ответ 3

проблема может заключаться в том, что networkervice не имеет прав на чтение

salution:

rightclick your upload folder → poperty → security → Edit → add → type: NETWORK SERVICE → флажок full control allow- > нажать ok или применить

Ответ 4

Если кто-то наткнулся на это, поскольку это первый результат в google,

Не забудьте указать имя файла в методе SaveAs.

Не работает

file_upload.PostedFile.SaveAs(Server.MapPath(SaveLocation));

Вам нужно следующее:

filename = Path.GetFileName(file_upload.PostedFile.FileName);
file_upload.PostedFile.SaveAs(Server.MapPath(SaveLocation + "\\" + filename));

Я предположил, что метод SaveAs будет автоматически использовать загруженное имя файла. Ошибка получения ошибки "Доступ запрещен". Не очень описать фактическую проблему.

Ответ 5

Я столкнулся с этой проблемой один раз, и в моем случае soln , чтобы закрыть любой процесс в диспетчере задач, который использует/обращается к этому файлу.

Ответ 6

Просмотрели ли вы параметры расширенной безопасности?

что-то вроде ниже разрешений на изменение изображения папки в IIS_IUSRS

введите описание изображения здесь

Ответ 7

Я знаю, что это уже поздно, но я хотел поделиться тем, что это помогает кому-то.

Ваша конкретная ситуация может не распространяться, однако у меня была аналогичная ситуация, и мне удалось настроить атрибут File.

Попробуйте установить атрибут File в Normal:

var path = Server.MapPath("~/App_Data/file.txt");
File.SetAttributes(path, FileAttributes.Normal);
System.IO.File.WriteAllText(path, "Hello World");

Я надеюсь, что это поможет кому-то.

Ответ 8

Перейти в корневую папку

Щелкните правой кнопкой мыши, выберите Свойства

Выберите вкладку Безопасность

Нажмите "Изменить"

Нажмите "Добавить"

Введите "EveryOne"

Нажмите OK

Проверить полный контроль

Нажмите OK