Доступ к пути 'c:\inetpub\wwwroot\myapp\App_Data' отклоняется

Я только что установил IIS в Windows XP.

Когда я пытаюсь выполнить приложение, я получаю сообщение об ошибке:

Доступ к пути 'c:\inetpub\wwwroot\myapp\App_Data' отклоняется. Описание: Необработанное исключение произошло во время выполнения текущий веб-запрос. Просмотрите трассировку стека информацию об ошибке и где она возникла в коде.

Сведения об исключении: System.UnauthorizedAccessException: доступ к path 'c:\inetpub\wwwroot\myapp\App_Data' отрицается.

ASP.NET не имеет права доступа к запрашиваемому ресурсу. Рассматривать предоставление прав доступа ресурсу к запросу ASP.NET идентичность. ASP.NET имеет базовый идентификатор процесса (обычно {MACHINE}\ASPNET в IIS 5 или сетевой службе в IIS 6), который используется, если приложение не олицетворяет собой. Если приложение выдавать себя за личность, будет анонимный пользователь (обычно IUSR_MACHINENAME) или аутентифицированный запросить пользователя.

Чтобы предоставить ASP.NET доступ к файлу, щелкните правой кнопкой мыши файл в проводнике, выберите "Свойства" и выберите вкладку "Безопасность". Нажмите "Добавить", чтобы добавить соответствующего пользователя или группы. Выделите учетную запись ASP.NET и установите флажки для требуемого доступа.

Ошибка источника:

Строка 70: ​​Защищенный Sub cmbSettingFiles_SelectedIndexChanged (ByVal отправитель как объект, ByVal e As System.EventArgs) Ручки cmbSettingFiles.SelectedIndexChanged
Строка 71: Dim doc As XmlDocument = Новый XmlDocument()
Строка 72: doc.Load(Path.Combine(basePath, cmbSettingFiles.SelectedValue)) Строка 74: Dim settingsNode As XmlNode = doc.SelectSingleNode( "/settings" )

Исходный файл: C:\myapp\install\install.aspx.vb Линия: 72

Я попытался разрешить разрешение, сделав это:

Чтобы предоставить ASP.NET доступ к файлу, щелкните правой кнопкой мыши файл в проводнике, выберите "Свойства" и выберите вкладку "Безопасность". Нажмите "Добавить", чтобы добавить соответствующего пользователя или группы. Выделите учетную запись ASP.NET и установите флажки для требуемого доступа.

Но ошибка сохраняется.

Связано ли это с моим кодом?

Как я могу это решить?

ИЗМЕНИТЬ

Я решил проблему на своей машине dev, но я все еще получаю ошибку на своем веб-сервере.

Спасибо.

Ответ 1

Попробуйте перейти в свойство папки App_Data и добавить пользователя ASPNET с правами чтения и записи.

Ref:
Как назначить правильные разрешения для папки App_Data WebMail Pro ASP.NET
Разрешения на папку APP_DATA
ASP/ASP.NET Лучший способ обработать права на запись?

Если это не решит вашу проблему, проверьте, не открыты ли ваши XML файлы другим потоком с помощью этих файлов конфигурации... и предоставьте некоторые дополнительные сведения, если они все еще сохраняются.

Ответ 2

Отказ от ответственности: изменение разрешений для wwwroot является опасным и, вероятно, плохой идеей.

Вместо этого рассмотрите возможность хранения своих файлов где-нибудь кроме wwwroot. Если вам нужно обслуживать файлы без участия вашего приложения, сохраните их в папке за пределами inetpub и используйте виртуальный каталог, чтобы сделать их видимыми для IIS.

Оригинальный ответ:


Для тех, кто работает IIS на Windows Server:

По умолчанию пользователь IIS не имеет прав на запись в папку wwwroot. Эту проблему можно решить, предоставив пользователю IIS_IUSRS полные права доступа для wwwroot.

  1. Откройте проводник и перейдите к C:/inetpub/
  2. Щелкните правой кнопкой мыши на wwwroot и выберите "Свойства"
  3. Перейдите на вкладку "Безопасность" и нажмите "Изменить...", чтобы изменить разрешения
  4. .Найдите и выберите пользователя IIS. В моем случае это называлось IIS_IUSRS ([server name]\IIS_IUSRS).
  5. Установите флажок "Разрешить" для всех разрешений.

Ответ 3

Учитывайте, что ваш файл только для чтения, дополнительные параметры могут помочь с FileStream

using (var fs = new FileStream(path, FileMode.Open, FileAccess.Read))

Ответ 4

Вы уверены, что добавляете правильного пользователя? Вы проверили, какой пользователь настроен для вашего пула приложений?

Эта ошибка также произойдет, если по какой-либо причине она не сможет прочитать файл; например, файл заблокирован или используется другим приложением. Поскольку это веб-приложение ASP.NET, вы захотите убедиться, что вы не выполняете никаких действий, требующих блокировки файла; если вы не можете гарантировать, что на вашем сайте будет только один пользователь.

Можете ли вы опубликовать пример доступа к файлу? Какой тип файла? Фрагменты кода помогут вам получить более точный ответ.

Ответ 5

У меня была аналогичная ситуация. Я использую TFS для управления исходным кодом. Я обнаружил, что когда он был проверен, он делал файлы только для чтения. Это вызвало вышеупомянутую ошибку в моей службе, где она открывала их чтение/запись. Как только я проверил их для редактирования. Все отлично поработало. Я подумываю о том, чтобы попытаться открыть их только на службе. Я думаю, что, как только они появятся на рабочем сервере, это не проблема. Только в среде разработки. Я видел аналогичные проблемы с службами, которые используют Entity Framework. Если файл .svc установлен, вы не можете выполнять обновление базы данных через EF.

Ответ 6

Я попытался добавить ASP.net v4.0 со всем разрешением, добавить пользователя NETWORK SERVICE, но ничего не помогло. Наконец, добавлено право MODIFY пользователя DefaultAppPool в папке App_Data, проблема решена.

Ответ 7

Попробуйте предоставить разрешение пользователю NETWORK SERVICE.

Ответ 8

Запустите Visual Studio с правами администратора.. Эта проблема решена для меня..

Доступ к пути запрещен C:\inetpub\wwwroot , указывает, что веб-сайт Self Service не может получить доступ к определенной папке на сервере, где он установлен. Это может быть либо из-за того, что местоположение не существует, либо потому, что пользователь проверки подлинности не имеет каких-либо разрешений для записи в это местоположение.

Ответ 9

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

Ответ 10

Я наконец-то нашел ответ для 2019. Вам нужно добавить "IIS APPPOOL\DefaultAppPool" в список пользователей, которые имеют права доступа к каталогу, который нужно изменить. Убедитесь, что у них есть полные права.