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

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

Решение:

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

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

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

<?xml version="1.0"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
    <connectionStrings>
  <add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True"
   providerName="System.Data.SqlClient" />
 </connectionStrings>
 <system.web>
  <compilation debug="true" strict="false" explicit="true" targetFramework="4.0"/>
    </system.web>
</configuration>

Моя ошибка:

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

Ответ 1

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

Update:

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

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

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

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

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

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

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

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

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

Ответ 2

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

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


Смена удостоверения с ApplicationPoolIdentity на LocalSystem сделала свое дело;).

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

подробнее об идентификации пула приложений в IIS 7.5 и победе 7

enter image description here

Ответ 3

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

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

Ответ 4

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

Что я сделал, я просто изменил некоторые шаги:

  • Щелкните правой кнопкой мыши на родительской папке (кто потерял разрешение),
  • Свойства = > Безопасность = > В "Имена групп или пользователей:",
  • Нажмите "Изменить"...
  • Откроется окно "Разрешение для вашей папки".
  • В "Имена групп или пользователей:" нажмите ADD... btn,
  • Введите Authen и нажмите "Проверить имена",
  • Вы увидите полное имя группы Аутентифицированные пользователи
  • Нажмите ok = > apply.
  • Это должно снова включить привилегии.

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

Ответ 5

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

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

Ответ 6

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

Задание выполнено!

Ответ 7

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

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

Ответ 8

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

enter image description here

Ответ 9

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

Ответ 11

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

Ответ 12

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

Ответ 13

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

Смотрите: Диспетчер IIS не может настроить .NET-компиляцию на приложениях .NET 4

Ответ 14

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

Ответ 15

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

Ответ 16

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

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

<application path="/MySite/MyService" applicationPool="MyAppPool" enabledProtocols="http">
    <virtualDirectory path="/" physicalPath="C:\inetpub\MySite/MyService" />
</application>

Убедитесь, что атрибут physicalPath не содержит прямую слэши /, только обратная косая черта \

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

<application path="/MySite/MyService" applicationPool="MyAppPool" enabledProtocols="http">
    <virtualDirectory path="/" physicalPath="C:\inetpub\MySite\MyService" />
</application>

Ответ 17

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

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

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

Ответ 18

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

Ответ 19

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

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

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

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

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

Ответ 20

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

Ответ 21

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

Ответ 22

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

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

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

Ответ 23

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

Ответ 24

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

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

Ответ 25

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

Ответ 26

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

Ответ 27

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

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

Ответ 28

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

(IIS 8.5 windows 2012 R2)

Ответ 29

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

  • выберите свой веб-сайт или приложение в левом углу. В большинстве случаев он будет находиться под веб-сайтом по умолчанию.
  • нажмите на Основные настройки в правом углу в диспетчере IIS 7 или выше.
  • нажмите подключиться как.
  • Используйте " Специальный пользователь", нажмите кнопку "Установить".
  • Введите свое имя пользователя и пароль. например Домен\имя_пользователя. для меня это было похоже ABC\rrajkumar, введите пароль.
  • перезапустите IIS, просмотрите свой сайт. Теперь он должен работать.

Ответ 30

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

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

  2. нажмите на кнопку редактирования.

  3. нажмите кнопку добавления. тип COMPUTER_NAME\IIS_USERS

    или

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

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

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