Платформа ASP.NET отказала в доступе к каталогам IIS ASP.NET

В этом техническом документе описывается, что необходимо сделать, если запрос к приложению ASP.NET возвращает ошибку "Отказано в доступе к каталогу DirectoryName . Не удалось запустить мониторинг изменений каталога".

Применимо к ASP.NET 1.0 и ASP.NET 1.1.

ASP.NET версии 1 RTM теперь выполняется с использованием менее привилегированной учетной записи Windows, зарегистрированной как учетная запись ASPNET на локальном компьютере.

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

Снимок экрана: представление браузера со страницей ошибки с заголовком

Чтобы устранить эту проблему, необходимо изменить разрешения безопасности для соответствующих каталогов.

В частности, ASP.NET требуется доступ на чтение, выполнение и получение списка для учетной записи ASPNET для корневого веб-сайта (например, c:\inetpub\wwwroot или любого альтернативного каталога сайта, настроенного в IIS), каталога содержимого и корневого каталога приложения для отслеживания изменений файла конфигурации. Корень приложения соответствует пути к папке, связанной с виртуальным каталогом приложения в средстве администрирования IIS (inetmgr).

Например, рассмотрим следующую иерархию приложений в папке wwwroot.

C:\inetpub\wwwroot\myapp\default.aspx

В этом примере учетной записи ASPNET требуются разрешения на чтение, определенные выше для содержимого в каталоге myapp и wwwroot. Один наследуемый ACL в корневой папке также можно использовать для обоих каталогов, если они вложены.

Чтобы добавить разрешения в каталог, выполните следующие действия.

  • С помощью проводника Windows перейдите в каталог
  • Щелкните правой кнопкой мыши папку каталога и выберите "Свойства".
  • Перейдите на вкладку "Безопасность" в диалоговом окне свойств.
  • Нажмите кнопку "Добавить" и введите имя компьютера, за которым следует имя учетной записи ASPNET. Например, на компьютере с именем webdev введите webdev\ASPNET и нажмите кнопку "ОК".
  • Убедитесь, что для учетной записи ASPNET установлен флажок Read & Execute (Чтение & выполнить), List Folder Contents (Вывод содержимого папки) и Read (Прочитать).
  • Нажмите кнопку ОК, чтобы закрыть диалоговое окно и сохранить изменения.

Снимок экрана: диалоговое окно свойств. Выбрано O K.

При необходимости эти изменения можно автоматизировать с помощью скриптов или средства "cacls.exe", поставляемого с Windows. Дополнительные сведения об учетной записи ASPNET см. в документе с часто задаваемыми вопросами.

Если определенное веб-приложение полагается на наличие разрешений на запись или изменение определенной папки или файла, это можно сделать, выполнив ту же процедуру и установив флажки "Запись" и (или) "Изменить".

На компьютерах, на которых разрешен доступ на чтение к этим каталогам (конфигурация по умолчанию для группы "Все" или "Пользователи"), проблемы не возникают, и описанные выше действия не требуются.