Не удается прочитать файл конфигурации из-за недостаточных прав доступа - PullRequest
317 голосов
/ 11 апреля 2011

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

Решение:

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

(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 \ Веб-сайты \ PointsForTime \ web.config

Ответы [ 36 ]

507 голосов
/ 11 апреля 2011

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

Обновление:

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

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

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

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

Так что же это за IIS_IUSRS?

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

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

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

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

64 голосов
/ 21 июня 2013

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

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


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

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

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

enter image description here

59 голосов
/ 10 сентября 2012

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

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

34 голосов
/ 22 сентября 2015

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

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

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

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

17 голосов
/ 11 апреля 2011

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

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

14 голосов
/ 08 января 2012

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

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

14 голосов
/ 26 января 2016

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

Когда группа НЕ доступна, замените IIS_IUSRS на ComputerName \ IIS_IUSRS

11 голосов
/ 23 июня 2015

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

enter image description here

6 голосов
/ 07 ноября 2011

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

5 голосов
/ 10 января 2014

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

...