Почему мой файл предположительно не может быть прочитан из-за недостаточных прав доступа (ошибка HTTP 500.19), когда на него нет ограничений?

Я получаю эту ошибку при попытке запустить сайт ASP.NET (я впервые пытаюсь заставить его работать):

Тем не менее, глядя на файл (\C:\EnhancedSalesReporting\customerreportingnet\customerreportingnet\web.config), он не имеет каких-либо ограничений / недостаточных разрешений:

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

asp.net web.config 500.19 internalservererror configfile недостаточно прав доступа

ОБНОВИТЬ

Когда я подошел к нему по-другому, создав виртуальный каталог в IIS, указав его расположение этих файлов, а затем в VS выбрав "Файл"> "Открыть веб-сайт", я не стал лучше. Страницы с ошибками разные, но я застрял в любом случае. Этот блокпост описан здесь.

ОБНОВЛЕНИЕ 2

Когда я пытаюсь выполнить шаги в принятом ответе по ссылке, приведенной в комментарии Кена Уайта, пытаясь добавить "IIS_IUSRS" в группу Web.Config или имена пользователей на вкладке "Безопасность", я получаю "Имя не найдено - объект с именем "IIS_IUSRS" не найден..."

Я поступаю об этом неправильно? Я получаю те же результаты, пытаюсь ли я отредактировать Web.Config через проводник Windows или из панели просмотра содержимого в IIS7.5 - это что-то еще значит?

ОБНОВЛЕНИЕ 3

Еще одна подсказка из этого поста, на который ссылаются выше: "Вы также должны проверить наличие атрибута только для чтения в файле applicationhost.config"

Это стоит попробовать, но какой? У меня на жестком диске 9 файлов applicationhost.config, и четыре из них выглядят как вероятные перспективы в следующих местах:

C:\Program Files (x86)\IIS Express
C:\Program Files\IIS Express
C:\Users\cshannon\MyDocuments\IIS Express
C:\Windows\System32\inetsrv

Что, если таковые имеются, было бы выгодно установить readonly в false?

ОБНОВЛЕНИЕ 4

Это в ответ на ответ Майкла Лю:

Спасибо, Майкл;

Я следовал твоим шагам, но все равно получил ту же страницу с ошибкой Я ожидал, что это сработает, и поэтому я был немного удивлен (даже смущен), что у меня появилась та же старая страница с ошибками.

Кстати, я не видел вкладку "Подробности" в диспетчере задач, но есть вкладка "Показать процессы всех пользователей" на вкладке "Процессы".

Может быть, это проблема - в диспетчере задач есть три записи w3wp.exe:

Image Name      User Name
----------      ---------
w3wp.exe *32    DefaultAppPool
w3wp.exe        classicEservice 
w3wp.exe        NETWORK SERVICE

Должен ли быть только один?

ОБНОВЛЕНИЕ 5

После перезапуска IIS7.5 у меня "всего" две записи w3wp.exe в диспетчере задач:

w3wp.exe *32 (DefaultAppPool)
w3wp.exe (NETWORK SERVICE)

Так 2 слишком много?

УПАТЭ 6

В ответ на обновленные шаги Майкла:

Application Pool == classicEservice

В "пулах приложений" значения для classicEservice:

Status == Started
.NET Framework Version == v2.0
Managed Pipeline Mode == Classic
Identity == ApplicationPoolIdentity
Applications == 5

Повторяя шаги снова, но замена "DefaultAppPool" на "classicEservice" определенно выводит меня на правильный путь, поскольку я больше не получаю страницу с ошибкой 500,19. Теперь это "песочные часы" на http://localhost/CustomerReportingNET/pages/custmaint_entry.aspx.

Я думаю, что "/pages/custmaint_entry.aspx" должен быть удален из этого; Я посмотрю, что мне нужно сделать, чтобы добиться этого...

ОБНОВЛЕНИЕ 7

Первый раз, когда он "остекленел", пока коровы не вернулись домой, во второй (и третий) раз он показал мне это:

ОБНОВЛЕНИЕ 8

Я попытался "Начать без отладки" и удалил задний конец URL-адреса, чтобы он был просто " http://localhost/CustomerReportingNET/", но все равно это песочные часы (или "голубые вращающиеся пончики", я думаю), как кружащийся дервиш. Передозировка энергетических напитков.

1 ответ

Решение

Ошибка "Не удается прочитать файл конфигурации из-за недостаточных разрешений" означает, что рабочий процесс IIS w3wp.exe выполняется под учетной записью, у которой нет разрешения на доступ к Web.config. Действительно, на вашем скриншоте прав доступа к файлу Web.config показан очень ограниченный набор учетных записей.

Сначала определите, какая учетная запись w3wp.exe работает как:

  1. В диспетчере IIS найдите и выберите свой виртуальный каталог в левом дереве.
  2. На панели действий справа щелкните Основные настройки.
  3. Запишите настроенный пул приложений и нажмите " Отмена".
  4. Выберите Application Pools в левом дереве (оно должно быть в верхней части списка).
  5. В списке пулов приложений найдите тот, который вы отметили на шаге 3, и посмотрите значение в столбце Identity.

IIS 7.5 и выше (Windows 7, Windows Server 2008 R2)

Я собираюсь предположить, что настроенный пул приложений - DefaultAppPool, а его удостоверение - ApplicationPoolIdentity, что означает, что IIS создает виртуальную учетную запись для пула приложений. (Дайте мне знать, если они что-то еще.)

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

  1. В проводнике Windows откройте диалоговое окно "Свойства" для папки, содержащей файл Web.config (C:\EnhancedSalesReporting\customerreportingnet\customerreportingnet).
  2. На вкладке " Безопасность " нажмите кнопку " Редактировать", чтобы открыть диалоговое окно " Разрешения ", а затем нажмите кнопку " Добавить".
  3. В диалоговом окне " Выбор пользователей " нажмите кнопку " Местоположения", выберите свой компьютер (вероятно, первый элемент в списке и IBM-JBAKER на скриншоте) и нажмите кнопку " ОК".
  4. В текстовом поле Введите имена объектов для выбора введите IIS APPPOOL \ DefaultAppPool (без конечных пробелов) и нажмите кнопку ОК.
    • Кроме того, вы можете предоставить доступ ко всем виртуальным учетным записям IIS, набрав вместо этого IIS_IUSRS.
  5. Вернувшись в диалоговое окно " Разрешения ", флажки " Чтение и выполнение" и " Чтение" в столбце " Разрешить" уже должны быть установлены, поэтому просто нажмите кнопку " ОК".

IIS 6.0 / 7.0 (Windows Vista, Windows Server 2003/2008)

В этих операционных системах w3wp.exe работает как "реальная" учетная запись (например, NETWORK SERVICE) вместо виртуальной учетной записи. Выполните действия, описанные в предыдущем разделе, но на шаге 4 замените фактическую учетную запись, показанную в диспетчере задач (или IIS_WPG), на IIS APPPOOL \ DefaultAppPool (или IIS_IUSRS).

Другие вопросы по тегам