Не удается прочитать файл конфигурации из-за недостаточных разрешений

Недавно я столкнулся с ошибкой при попытке разместить мой сайт asp.net с помощью IIS. Я нашел решение, к которому многие клянутся.

Решение:

  1. Добавить IIS_IUSRS с разрешением на чтение файлов в папке
  2. Изменить метод проверки подлинности IIS на BasicAuthentication
  3. обновите сайт. Это будет работать

( http://vivekthangaswamy.blogspot.com/2009/07/aspnet-website-cannot-read.html )

Что я могу добавить в мой файл web.config? Мне никогда не приходилось редактировать его раньше. Вот его текущее содержание:

          

Моя ошибка:

Ошибка конфигурации: невозможно прочитать файл конфигурации из-за недостаточных разрешений
Файл конфигурации: \? \ C: \ Users ***** \ Documents \ Visual Studio2010 \ WebSites \ PointsForTime \ web.config

Нет проблем с вашим web.config . Ваш веб-сайт работает в процессе. В iis вы можете определить личность этого процесса. Идентификатор, который пул приложений вашего веб-сайта работает как ( сетевые службы, локальная система и т. Д.), Должен иметь разрешение на доступ и чтение файла web.config.

Обновить:

Этот обновленный ответ такой же, как и выше, но немного длиннее, проще и улучшен.

Прежде всего : вам не нужно ничего менять в вашем файле конфигурации. Все в порядке . Проблема заключается в разрешениях файлов Windows .

Эти проблемы возникают из-за того, что ваше приложение не может получить доступ и прочитать файл web.config .

Сделать файл доступным для группы IIS_IUSRS . Просто щелкните правой кнопкой мыши web.config и щелкните свойства , на вкладке безопасности добавьте IIS_IUSRS .

Итак, что это за IIS_IUSRS?

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

Когда ваш сайт запущен в IIS , пул приложений вашего веб-сайта связан с пользователем ( сетевые службы, локальная система и т. Д.) (И может быть изменен в IIS)

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

И как @Seph упоминается в комментарии ниже : Если ваш компьютер находится в домене , помните, что группа IIS_IUSRS является локальной группой . Также убедитесь, что когда вы пытаетесь найти этого пользователя, проверьте его местоположение на локальном компьютере, а не на корпоративном домене.

Примечание редактора: Выполнение того, что говорит этот ответ, ОПАСНО ! Учетная запись LocalSystem – это …

Полностью доверенная учетная запись, в большей степени, чем учетная запись администратора. В одном ящике нет ничего, что эта учетная запись не может сделать, и она имеет право доступа к сети в качестве компьютера (для этого требуется Active Directory и предоставление разрешения учетной записи компьютера)


Изменение идентификатора из ApplicationPoolIdentity в LocalSystem выполняло работу;).

Я использую win7 64 с IIS 7.5

Идентификация пула приложений в IIS 7.5 и выиграть 7

введите описание изображения здесь

У меня возникла проблема с тем же разрешением, что и в файле web.config .
Однако моя проблема была вызвана тем, что IIS не загрузил конфигурационный файл, поскольку содержал правила перезаписи URL, и я не установил модуль перезаписи URL-адреса IIS на новом сервере.

Решение. Установите модуль перезаписи.
Надеюсь, что кто-то спасет несколько часов.

У меня была такая же проблема, когда я пытался поделиться корневой папкой сайта с другим пользователем. Некоторая папка потеряла разрешение. Поэтому я выполнил шаги, чтобы добавить разрешение на группу IIS_IUSRS, как было предложено Afshin Gh. Проблема в том, что эта группа недоступна для меня. Я использую windows 7.

Я сделал несколько шагов:

  1. Щелкните правой кнопкой мыши на родительской папке (которая потеряла разрешение),
  2. Свойства => Безопасность => В «Имена групп или пользователей:»,
  3. Нажмите «Изменить» …
  4. Будет открыто окно «Разрешение для вашей папки».
  5. В «Имена групп или пользователей:» нажмите ADD … btn,
  6. Введите Authen и нажмите «Проверить имена»,
  7. Вы увидите полное имя группы « Аутентифицированные пользователи »,
  8. Нажмите ok => применить.
  9. Это должно снова включить привилегии.

Это сработало для меня.

Вам не нужно ничего менять в вашем web.config.

Проблема заключается в разрешениях файловой системы. Разрешения вашего файла не позволяют пользователю IIS_IUSRS обращаться к web.config (или, возможно, к любому из файлов). Измените права доступа к файлам в Windows, чтобы позволить учетной записи IIS_IUSRS получить к ней доступ.

Перейдите в родительскую папку, щелкните правой кнопкой мыши и выберите « Свойства» . Выберите вкладку « Безопасность », отредактируйте разрешения и « Добавить» . Нажмите « Дополнительно» и « Найти сейчас» . Выберите IIS_IUSRS и нажмите « ОК» и « ОК» еще раз. Убедитесь, что у вас есть чек. Нажмите « ОК» и « ОК» еще раз.

Работа выполнена!

Сделайте файл доступным для группы IIS_IUSRS . Щелкните правой кнопкой мыши свой web.config, разверните свойства и на вкладке «Безопасность» добавьте IIS_IUSRS. Дайте группе доступ к чтению / записи.

Если группа недоступна, замените IIS_IUSRS на имя_компьютера \ IIS_IUSRS

Когда вы предоставляете разрешения IIS_IUSRS, вы должны проверить, что в разделе IIS / Authentication вашего веб-приложения учетные данные анонимной аутентификации используют идентификатор пула приложений, а не IUSR.

введите описание изображения здесь

По какой-то причине ваш web.config установлен как только для чтения. Снимите флажок с параметром readonly файла web.config.

Мне нужно было добавить разрешения на IUSR (в дополнение к ISS-IUSRS, как это предлагали другие). (См. Также: http://codeasp.net/blogs/raghav_khunger/microsoft-net/2099/iis-7-5-windows-7-http-error-401-3-unauthorized )

Я использовал subst, чтобы создать сопоставление от D: до C: чтобы поддерживать ту же настройку, что и другие разработчики в команде. Это также дало мне такие же ошибки, как описано. Удаление этого исправлено для меня.

У нас был веб-сайт, работающий с определенной идентификацией в приложении, только после того, как этот пользователь прочитал доступ к папке, содержащей файл web.config, если бы он работал. Мы отслеживали это после добавления пользователя «каждый» с чтением, и все работало нормально.

Для меня ошибка появилась во время отладки на моей локальной машине и оказалась связанной с базовым web.config, который инициируется .NET Framework при компиляции веб-сайта. Мой файл C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config \ web.config имел непризнанный элемент (folderLevelBuildProviders). Исправлено исправление ошибки 500.19.

См. Следующее : Диспетчер IIS не может настроить .NET Compilation для приложений .NET 4

Изменение идентификатора модели процесса в LocalSystem исправило эту проблему для меня. Этот параметр можно найти, если щелкнуть правой кнопкой мыши пул приложений и выбрать «Дополнительные настройки». Я запускаю IIS 7.5.

Щелкните правой кнопкой мыши Web.Config => Tab Security => Кнопка Edit => Кнопка Add => Кнопка Advanced => Кнопка Найти сейчас => В результатах поиска выберите вашу группу (в нашем случае «IIS_IUSRS») => Ok => Ok => ОК

Это произошло с нами, когда приложение IIS имеет виртуальный каталог с физическим контуром, который содержит косые черты / вместо обратных косых черт \ . Это было сделано случайно с использованием API управления PowerShell для IIS во время нашего непрерывного процесса доставки.

Пример Bad Config – applicationHost.config

    

Убедитесь, что атрибут physicalPath не содержит косые черты / , только обратные косые черты \

Исправленный пример конфигурации – applicationHost.config

    

Я решил это, добавив разрешение на чтение в папку для пользователя пула приложений (WIN SERVER 2008 R2): C: \ Windows \ System32 \ inetsrv \ config

Немного предыстория: наш сервер был взломан с использованием classической ошибки, когда у пользователя приложения было больше разрешений (local admin).

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

Сдвиньте свой проект на другой диск, отличный от C: Работал для меня с той же ошибкой.

Принятое решение не для меня. Я использую repository Git и клонируется в следующую папку

 c:\users\myusername\source\repos\myWebSite 

Я создал новый веб-сайт IIS и указал на него. У которых не было разрешений iis_iusrs, предложенных в принятом решении. Когда я добавил разрешения, он все равно не работал.

Он только начал работать, когда я дал следующие разрешения группе «Пользователи», а наследование каскадировало разрешения для web.config. Вероятно, он должен был применить его только к web.config, чтобы уменьшить площадь поверхности атаки.

Пользовательские ошибки

Убедитесь, что ваш файл web.config не отмечен. Только для чтения.

Я получил «Не могу прочитать файл конфигурации из-за недостаточных разрешений». Оказалось, что ограничения ISAPI и CGI в IIS для обоих ASP.NET 4.0 32bit и 64bit были отвергнуты. Отметив их как разрешенными, исправлена ​​моя проблема.

Если эта проблема возникла с помощью Virtual Application. Все разрешения были установлены. IIS_IUSRS, AppPoolIdentity, а затем предоставил полный доступ ко всем. Ничего не получилось. Перезапуск приложения, сайт и IIS, но не идут.

Удалил виртуальное приложение и добавил его с нуля, и он начал работать.

Хотел бы я знать, что это решило.

убедитесь, что файл не помечен как ansible только для чтения , несмотря на разрешение IIS_IUSRS, оно отобразит одно и то же сообщение.

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

Кроме того, принятый ответ не подходит для такого случая. Локальные пользователи или пользователи IIS не были доступны для назначения разрешений. Решением было перемещение физической папки на локальный диск.

У меня была такая же проблема, и после того, как я сделал все, что написал здесь в качестве ответов, он все еще воспроизводится. Вторая половина проблемы была связана с тем, что .NET был отключен в разделе «Включить или отключить функции Windows»,

Иногда, если это новый сервер, вам нужно настроить или установить функцию ASP.NET в IIS, чтобы она могла читать ваш файл web.config.

В моем случае это была причина.

В моем случае я пытался размещать страницы с подключенного диска (subst). Проблема в том, что подпрограмма была запущена под моей учетной записью, и пользователь IIS не смог увидеть тот же диск

Я дал разрешение и использовал файл ICACLS.exe, но не работал. Затем я изменил физический путь, и он успешно работал.

(IIS 8.5 windows 2012 R2)

Конечно, это проблема с разрешениями. Я сделал следующие шаги, и это сработало для меня.

  1. выберите свой веб-сайт или приложение в левом углу. В большинстве случаев это будет на веб-сайте по умолчанию .
  2. нажмите « Основные настройки» в правом углу в диспетчере IIS 7 или выше.
  3. нажмите кнопку « Подключиться как кнопка».
  4. Используйте « Особый пользователь », нажмите кнопку «Установить».
  5. Введите свое имя пользователя и пароль. как домен \ имя пользователя . для меня это было как ABC \ rrajkumar, введите пароль.
  6. перезапустите IIS, просмотрите свой сайт. Теперь он должен работать.
  1. Перейдите в IIS, (сайты)
  2. Щелкните правой кнопкой мыши по проекту внутри сайтов. введите описание изображения здесь

и нажмите на разрешение редактирования.

  1. Перейти к безопасности.

  2. нажмите кнопку «Изменить».

  3. нажмите кнопку «Добавить». тип COMPUTER_NAME \ IIS_USERS

    или

  4. клик вперед.

  5. нажмите кнопку «Найти сейчас».

    и есть возможность выбора. выберите IIS_USERS и нажмите ok … ok …. ok.

Давайте будем гением компьютера.