Почему мой файл предположительно не может быть прочитан из-за недостаточных прав доступа (ошибка 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 работает как:
- В диспетчере IIS найдите и выберите свой виртуальный каталог в левом дереве.
- На панели действий справа щелкните Основные настройки.
- Запишите настроенный пул приложений и нажмите " Отмена".
- Выберите Application Pools в левом дереве (оно должно быть в верхней части списка).
- В списке пулов приложений найдите тот, который вы отметили на шаге 3, и посмотрите значение в столбце Identity.
IIS 7.5 и выше (Windows 7, Windows Server 2008 R2)
Я собираюсь предположить, что настроенный пул приложений - DefaultAppPool, а его удостоверение - ApplicationPoolIdentity, что означает, что IIS создает виртуальную учетную запись для пула приложений. (Дайте мне знать, если они что-то еще.)
Вам необходимо разрешить этой виртуальной учетной записи доступ к папке вашего приложения:
- В проводнике Windows откройте диалоговое окно "Свойства" для папки, содержащей файл Web.config (C:\EnhancedSalesReporting\customerreportingnet\customerreportingnet).
- На вкладке " Безопасность " нажмите кнопку " Редактировать", чтобы открыть диалоговое окно " Разрешения ", а затем нажмите кнопку " Добавить".
- В диалоговом окне " Выбор пользователей " нажмите кнопку " Местоположения", выберите свой компьютер (вероятно, первый элемент в списке и IBM-JBAKER на скриншоте) и нажмите кнопку " ОК".
- В текстовом поле Введите имена объектов для выбора введите IIS APPPOOL \ DefaultAppPool (без конечных пробелов) и нажмите кнопку ОК.
- Кроме того, вы можете предоставить доступ ко всем виртуальным учетным записям IIS, набрав вместо этого IIS_IUSRS.
- Вернувшись в диалоговое окно " Разрешения ", флажки " Чтение и выполнение" и " Чтение" в столбце " Разрешить" уже должны быть установлены, поэтому просто нажмите кнопку " ОК".
IIS 6.0 / 7.0 (Windows Vista, Windows Server 2003/2008)
В этих операционных системах w3wp.exe работает как "реальная" учетная запись (например, NETWORK SERVICE) вместо виртуальной учетной записи. Выполните действия, описанные в предыдущем разделе, но на шаге 4 замените фактическую учетную запись, показанную в диспетчере задач (или IIS_WPG), на IIS APPPOOL \ DefaultAppPool (или IIS_IUSRS).