Доступ к пути '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
.
- Откройте проводник и перейдите к
C:/inetpub/
- Щелкните правой кнопкой мыши на wwwroot и выберите "Свойства"
- Перейдите на вкладку "Безопасность" и нажмите "Изменить...", чтобы изменить разрешения
- .Найдите и выберите пользователя IIS. В моем случае это называлось
IIS_IUSRS ([server name]\IIS_IUSRS)
.
- Установите флажок "Разрешить" для всех разрешений.
Ответ 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" в список пользователей, которые имеют права доступа к каталогу, который нужно изменить. Убедитесь, что у них есть полные права.