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

280

Недавно я столкнулся с ошибкой при попытке разместить мой сайт 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

  • 6
    Пожалуйста, смотрите модуль перезаписи установки. сэкономить несколько часов
  • 0
    Мое решение будет запускать команды из командной строки, открытой с правами администратора. Для этого найдите командную строку, щелкните ее правой кнопкой мыши и выберите команду «Выполнить с правами администратора».
Показать ещё 3 комментария
Теги:
file-permissions
iis-7

36 ответов

451
Лучший ответ

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

Update:

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

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

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

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

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

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

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

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

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

  • 71
    Для других стоит отметить, что по умолчанию обычно используется IIS_IUSRS и чтобы убедиться, что при попытке найти этого пользователя проверьте местоположение, он должен быть установлен на локальном компьютере, а не на корпоративном домене.
  • 0
    Как можно это сделать?
Показать ещё 23 комментария
66

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

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


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

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

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

Изображение 5947

  • 0
    Полезный ответ и для IIS 6. Более подробную информацию о том, как изменить удостоверение пула приложений на веб-сайте Microsoft, можно найти здесь: microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/…
  • 17
    Внесение этого изменения представляет собой угрозу безопасности из-за доступа, который вы предоставляете этой службе: msdn.microsoft.com/en-us/library/windows/desktop/…
Показать ещё 7 комментариев
52

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

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

  • 3
    Спасибо - я несколько дней возился с разрешениями, и это решило проблему.
  • 0
    Ага. Предыдущий сервер, на котором я использовал это, переписал не-ssl-маршрут в ssl .. так много для отличного сообщения об ошибке из IIS. error: :) +1 Поскольку вместо того, чтобы требовать SSL, я переписал URL-адрес HTTPS, если кто-то связал его без https. Что за загадка
Показать ещё 5 комментариев
26

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

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

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

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

  • 2
    это сработало для меня, спасибо.
  • 2
    это сработало для меня, большое спасибо!
Показать ещё 2 комментария
17

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

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

  • 3
    Как бы я это сделал?
  • 1
    У меня была похожая проблема. Если кто-либо не может найти пользователя IIS_IUSRS, проверьте местоположение. Мой по умолчанию перешел на корпоративный домен, поэтому я не нашел его сразу, потому что забыл проверить, где он находится.
Показать ещё 4 комментария
14

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

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

  • 0
    +1 Хороший совет. Принятый ответ хорош, но не стоит упоминать, что вам может потребоваться добавить имя вашего компьютера перед «IIS_IUSRS», что и помогло мне преодолеть это.
  • 0
    Это («Когда группа НЕ доступна») возродило мои надежды, но даже когда я добавил имя компьютера («IBM-TAMMYFAYEBAKER.platypus.local \ IIS_IUSRS»), я все еще получаю ту же ошибку. Я тоже попробовал полное имя компьютера, но он даже не принял бы его за действительного пользователя.
14

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

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

  • 18
    Что на самом деле с рекомендацией Доступ на запись, когда чтение - это все, что нужно? / downvoted
  • 0
    спасибо. работает нормально ..
Показать ещё 2 комментария
9

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

Изображение 5948

  • 0
    Где я могу получить этот интерфейс?
  • 0
    На вкладке «Просмотр возможностей» в веб-приложении: аутентификация
6

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

  • 0
    Если у вас есть полный доступ и вы все еще получаете ошибку, это правильный ответ (y).
5

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

3

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

1

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

1

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

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

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

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

Изображение 5949

  • 0
    Была точно такая же ситуация. Это помогло.
1

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

1

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

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

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

1

Это произошло с нами, когда приложение 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>
  • 1
    В моем случае физический путь имел двойную обратную косую черту, например C:\inetpub\MySite\\MyService . Сменив его на один обратный слэш сработало
1

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

1

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

1

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

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

1

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

0

Я попробовал большую часть предыдущего предложения, но тщетно. Я не могу перезагрузить сайт, поэтому я отредактировал файл .csproj и изменил номер порта, и он сразу заработал:

 <WebProjectProperties>
      <UseIIS>True</UseIIS>
      <AutoAssignPort>True</AutoAssignPort>
      <DevelopmentServerPort>**4000**</DevelopmentServerPort>
      <DevelopmentServerVPath>/</DevelopmentServerVPath>
      <IISUrl>http://localhost:**4000**/</IISUrl>
      <NTLMAuthentication>False</NTLMAuthentication>
      <UseCustomServer>False</UseCustomServer>
      <CustomServerUrl>
      </CustomServerUrl>
      <SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
    </WebProjectProperties>

Редактирование .csproj файла

0

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

Если вы измените путь к файлам на локальный диск, это решит проблему, если это действительно ваша проблема.

0

Я работал на сайте в localhost/MyApp, созданном и работающем через Visual Studio - через виртуальный каталог, созданный самой Visual Studio.

"Решением" для меня было удалить виртуальный каталог и позволить Visual Studio воссоздать его.

0

У меня была эта проблема, работающая в Windows 10 с пулом приложений с использованием учетной записи microsoftaccount\[email protected] (например, вход на ПК с учетной записью Microsoft вместо локальной учетной записи).

Видимо на моем компьютере что-то испортилось; удаление IIS и повторное добавление ничего не сделали (потому что, похоже, метабаза IIS не была удалена). Удаление и воссоздание пула приложений тоже не помогло.

Моим решением было просто создать новый пул приложений с такими же настройками, но с другим именем. Это решило проблему для меня; очевидно, что-то испортилось в apppool, что даже не удастся исправить, даже удалив и повторно добавив его с тем же именем.

0

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

Единственное, что сработало, это скопировать папку и переименовать ее. Возможно, это была поврежденная папка в Windows, к которой IIS/ASP.NET не смог получить доступ.

0

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

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

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

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

    или

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

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

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

0

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

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

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

(IIS 8.5 windows 2012 R2)

0

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

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

0

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

0

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

0

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

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

0

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

0

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

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

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

0

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

-2

Все ответы действительны и работают при разных обстоятельствах.

Для меня перезапуск Visual Studio работал.

  • 0
    Я не понимаю, почему люди делают бессмысленные понижения, как это. Я только добавил то, что сработало для меня, что могло бы сработать для некоторых других людей.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню