Запрашиваемая страница не может быть доступна, потому что связанные данные конфигурации для страницы недействительны

480

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

Ошибка HTTP 500.19 - внутренняя ошибка сервера. Запрашиваемая страница недоступна, поскольку соответствующие данные конфигурации для этой страницы недействительны.

Модуль IIS Web Core
Уведомление Неизвестный
обработчик Еще не определен
Код 0x80070005
ошибки Ошибка конфигурации Не удается прочитать файл конфигурации из-за недостаточных разрешений
Файл конфигурации \\?\C:\Users\Yasso\Documents\Visual Studio 2008\WebSites\WebSite5\web.config

Я много раз искал решение этой ошибки, но ни одно из них не помогло.

У меня проблема с моей IUSRучетной записью. Я не вижу эту учетную запись в "группе или имени пользователя" в свойствах web.config.

В чем проблема?

Ясмин
источник
3
У меня была эта проблема после отмены некоторых изменений через Subversion (хотя это могло быть совпадением). Я заметил, что Web.configACL файла отличаются от других файлов в каталоге, и он не наследуется от своего родителя . Я включил наследование ACL и все вернулось на круги своя.
ta.speot.is
1
Мое решение было немного другим. На некоторых компьютерах с Windows Server 2008 необходимо предоставить доступ к группе «IIS_IUSRS», а не пользователю «IUSR», в пределах разрешений безопасности папки сайта. Обязательно зайдите на место вашей машины.
MacGyver
7
У меня была эта проблема при перемещении сайта на сервер, на котором не был установлен модуль IIS Url Rewrite.
Скотт
1
Это может произойти, если вы переименовали свой сервер. Я сделал это для себя - и в конечном итоге мне пришлось просто зайти (Windows Server 2012 R2) и заново добавить IIS APPPOOL \ SiteName ... и это на 100% исправило это.
Майкл К. Кэмпбелл
2
если вы новичок в развертывании приложений ASP.NET Core на своем старом сервере 2008 R2, вам нужно установить пакет .NET Core Windows Server Hosting - как я узнал в этом ответе
bkwdesign

Ответы:

178

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

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

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

Выше вы упомянули IUSR и т. Д., Не находящиеся в свойствах для web.config. Если под этим вы подразумеваете, что IUSR не указан на вкладке безопасности файла, то это хорошо. Никто не хочет давать IUSR какое-либо разрешение на web.config . Роль IUSR является анонимным интернет-пользователем.

Файл web.config должен быть доступен только через ваше приложение.

Проблема в том, что вы не сказали, какую версию ОС и IIS вы используете, поэтому трудно посоветовать, какие шаги предпринять.

То есть в IIS 7.5 сообщение об ошибке, которое вы цитируете, вероятно, возникает из-за того, что ApplicationPoolIdentity не были назначены разрешения. Ваше веб-приложение относится к пулу приложений, поэтому вам необходимо предоставить разрешения учетной записи ОС, под которой запускается пул приложений вашего веб-приложения. Часто это что-то вроде NetworkService, но вы можете настроить его для работы под специально созданной учетной записью. Без дополнительной информации вам сложно помочь.

intermension
источник
3
Могу ли я дать это разрешение программно? Пожалуйста помоги. У меня такая же проблема.
pcbabu
1
Спасибо, это решило и мою проблему. Я использую олицетворение, которое, очевидно, заставляет назначать разрешения READ для каталога приложения для олицетворенной учетной записи.
Цезарь
2
Я продолжаю получать сообщение "Не удалось перечислить объекты в контейнере. Доступ запрещен". после того как я даю разрешение
RollRoll
4
Щелкните правой кнопкой мыши на папке, которой вы хотите дать разрешение безопасности. Это корневая папка, в которой публикуется ваше приложение, и та же папка, что и физический путь вашего сайта IIS. Выберите свойства в контекстном меню и нажмите на вкладку «Безопасность». Редактировать пользователей, а затем Добавить пользователя. Нажмите кнопку Locations и выберите верхний значок (выглядит как Мой компьютер). В текстовой области введите IIS_IUSRS. Нажмите OK несколько раз, пока все контекстные меню не будут закрыты. Перезапустите свой веб-сайт и перейдите к нему снова.
Джереми Рэй Браун
Если вы не хотите выяснять права доступа к физическому пути к сайту, тогда дайте разрешение всем! Это быстрый и не рекомендуемый способ взлома всех физических файлов / папок.
Джереми Рэй Браун
662

Это также может произойти, если сайт настроен для использования модуля перезаписи URL IIS, но он не установлен.

bkaid
источник
Это было для меня .. удалили раздел перезаписи (который на самом деле не нужен), и все хорошо.
Эндрю Паттерсон
129
Отлично сработано. <rant> Было бы хорошо, если бы IIS выдавал ошибку «Я не понимаю, что такое <rewrite>» вместо того, чтобы жаловаться на искаженный XML. </ rant>
Эван Хаас,
7
Большое спасибо - это тоже была моя проблема. Модуль перезаписи используется, если вы видите тег <rewrite>. Можно подумать, что IIS может сказать вам, что не может разобрать.
scolestock
6
Хороший простой способ устранить недостающую зависимость в командной строке; webpicmd / Установка / Продукты: UrlRewrite2
перистые
2
Я просто хотел бы отметить, что если ваш web.config содержит тег <rewrite>, то вам нужен модуль rewrite.
Йоно
437

Наконец-то я получил решение своей проблемы. Учетная запись ASP.net не появилась в диспетчере IIS, потому что я не установил ее флажок в IIS. Для этого в Windows 7 выполните следующие действия:

  1. Открыть панель управления
  2. Нажмите на ссылку «программа» (не удалять программы)
  3. Нажмите на ссылку «включить / выключить функции Windows»
  4. Во всплывающем окне найдите «IIS служб Интернета» и разверните его узел.
  5. Разверните узел «Всемирная паутина»
  6. Разверните узел «Функции разработки приложений»
  7. Установите флажок «ASP.NET»
  8. Затем нажмите кнопку ОК

Теперь вы увидите учетную запись ASP.net в диспетчере IIS и по умолчанию вы увидите учетную запись IIS. Теперь вы должны переместить свой веб-сайт ASP.net из «моего документа» в другое место, где IIS имеет разрешение на доступ к нему (то есть в другой раздел на вашем компьютере). Теперь просмотрите ваш сайт у менеджера IIS, и он должен работать.

Большое спасибо Джеффу Тернеру за решение.

Ясмин
источник
Кто-то должен был удалить эту службу роли с сервера, который работал месяцами. Я бы никогда не догадался проверить это дважды. Тьфу.
SixOthree
Еще проще, используя командную строку:dism /NoRestart /Online /Enable-Feature /FeatureName:IIS-ASPNET
i3arnon
1
Спасибо ... как они могут выпустить продукт с таким низким уровнем сообщений об ошибках?
Вланд
В моем разделе <handlers> была ссылка на WebDAV, и как только я добавил функцию WebDAV в IIS, она заработала.
Энди Робертс
55

В моем случае установка модуля перезаписи URL IIS решила проблему.

Салим
источник
это я напомню себе в следующий раз, что это то, что исправило это для меня. какая ужасная ошибка: - /
Simon_Weaver
Это то же самое, что и ответ с наибольшим количеством голосов .
Майкл - Где Клэй Ширки
47

У меня была та же проблема, вот решение, которое работало для меня.

  1. IIS Manager
  2. Щелкните правой кнопкой мыши на этом сайте
  3. Изменить разрешения
  4. Добавлен пользователь 'IIS_IUSRS' на вкладке Безопасность
  5. Предоставил полные права доступа пользователю 'IIS_IUSRS'
  6. Установите для идентификатора пула приложений значение «ApplicationPoolIdentity»
Сухдевсин Зала
источник
2
Я не рекомендовал бы это для производственных целей. Я считаю, что IIS_IUSRS является анонимной учетной записью, и вы дадите ей полный доступ ко всей структуре каталогов сайта
Жак
Спас мой день тоже, поскольку я выяснил, что разрешение также является виновником, я использовал другую идентичность apppool, и это сработало!
около
39

Для разработчиков Visual Studio (VS): Как намекают Харви Дарви, Savage и Snives, конфигурация хоста приложения может указывать на неверный физический путь приложения. Найдите virtualDirectory в /.vs/config/applicationhost.config, чтобы изменить физический путь, если он неверен.

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

Убедитесь, что физический путь указан правильно:

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

Майкл
источник
3
Вы также можете сделать то же самое в project => properties => project url => создать виртуальный каталог, при желании выбрать да, чтобы переназначить правильный физический путь
Adam Diament
В моем случае это было немного по-другому, но это дало мне направление, большое спасибо, оно мне очень помогло :)
Бхарат,
24

Оповещение на лицевой стороне:

Вы также получите эту ошибку, если путь к файлу конфигурации неправильный. Дважды проверьте его, чтобы убедиться, что физический путь введен правильно в IIS.

Джон Кроуэлл
источник
Как вариант, оказывается, что я неправильно указал путь к самому сайту. Я случайно прошел через сопоставленный сетевой ресурс вместо пути к локальному системному файлу.
Дэвид
2
Был тот же самый момент лица ладони. Я переместил свой веб-сайт в подпапку и подумал, что правильно ввел новый путь в IIS. На сайте все еще есть все необходимые папки и т. Д., Отображаемые в дереве в IIS, поэтому причина этого не была вызвана. Я сбросил разрешения и т.д., но не решил. Тогда, обсуждая проблему, она была предложена мне мимоходом ... и теперь у меня снова есть рабочий сайт после 1 часа потраченного времени!
Ladygargar
Где этот путь установлен? Кажется, это моя проблема, но я не могу найти то, что мне нужно изменить
Дрю Рошон
В среде разработки: .vs> config> applicationhost.config Это то, что происходит, когда у вас нет GIT, игнорирующего файл, и разработчики начинают проверять его.
Savage
У меня была лишняя косая черта на моем физическом пути - шеш. Спасибо за это
J King
18

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

Чтобы назначить разрешения, просто щелкните правой кнопкой мыши папку и на вкладке безопасности убедитесь, что вы предоставили правильные разрешения, а если пользователя нет в списке, нажмите «ДОБАВИТЬ» и введите IIS_IUSRS (и убедитесь, что в разделе «домен» локальный компьютер выбран, или введите в поле имени YourLocalComputerName \ IIS_IUSRS), и тогда все готово.

Если вы хотите, вы можете вместо назначения разрешений группе IIS_IUSRS вместо этого назначить пулу приложений, который обычно должен быть «IIS APPPOOL \ имя пула приложений ».

Йоэль Хэлб
источник
Со следующего веб-сайта: iis.net/learn/get-started/planning-for-security/… Группа IIS_IUSRS заменяет группу IIS_WPG. Эта встроенная группа имеет доступ ко всем необходимым файловым и системным ресурсам, поэтому учетная запись при добавлении в эту группу может беспрепятственно действовать как удостоверение пула приложений.
Джереми Рэй Браун
В получении доступа отказано.
GreySage
15

Просто для того, чтобы сделать это, я получил такую ​​же ошибку, и моя проблема была довольно простой: мне не хватало .NET Core Hosting Bundle. Как только я установил инструмент и перезапустил сервер, все было в порядке.

Вы можете найти руководство по размещению ядра asp.net в Windows здесь: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-2.2

JS_Diver
источник
Простой установки .NET Core SDK недостаточно для запуска веб-сайтов ASP.NET Core под IIS. Я провел несколько часов, работая над этой ошибкой ...
Райан Родемойер
Это может быть недостаточно, но это решает эту ошибку. Работал на меня. Я предполагал, что все компоненты .NET уже включены.
pcalkins
Да, пришлось установить «Runtime & Hosting Bundle» здесь: dotnet.microsoft.com/download/dotnet-core/2.2
Кирк Волл,
Хорошо, «автономный» пакет не соответствует своему названию.
SLCH000
11

То же самое случилось со мной, попробуйте проверить это, дважды щелкнув строки подключения на правой панели IIS 7 при выборе веб-сайта.

Это даст вам ошибку (что есть некоторая проблема с файлом веб-конфигурации), потому что вы использовали правила перезаписи URL, и соответствующий компонент не установлен.

Установите «Microsoft URL Rewrite Module 2.0 для IIS 7», и это должно решить вашу проблему

Танудж Гулати
источник
9

Ничто здесь не работало для меня, я нашел эту команду в другом SO ответе, и это решило мою проблему. Просто запустите командную строку от имени администратора и выполните эту команду:

run->cmd

run "c:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i"

Кредит: пользователь Vicxx

кельт
источник
Чтобы исправить мою среду разработки против 2017 года, мне пришлось удалить IIS из моих функций Windows 7. Добавьте его обратно, обновите и установите все необходимое по мере необходимости. Последний шаг - запуск режима с помощью командной строки visual studio 2017. Теперь все снова работает, 8 часов потрачено на исправление. Ук ..
Уоррен ЛаФранс
7

Я делаю эти шаги для решения этой проблемы в Windows Server 2012, IIS 8.5. Должно работать и для других версий.

  1. Зайдите в диспетчер серверов, нажмите добавить роли и функции
  2. В разделе ролей выберите: Web Server
  3. В разделе «Безопасность» выберите все (я исключил дайджест, ограничения IP и авторизацию URL, поскольку мы их не используем)
  4. В разделе Разработка приложений выберите .NET Extensibility 4.5, ASP.NET 4.5и обаISAPI записи
  5. В разделе особенности выбора: NET 3.5, .NET 4.5,ASP.NET 4.5
  6. В разделе веб-сервера выберите: Web Server(все), Management Tools(Консоль управления IIS и Служба управления), Windows
Санбуур Дахир Херси
источник
6

Еще одна возможность, которая исправила эту проблему для меня:

IIS -> Изменить разрешения -> Вкладка «Безопасность» -> Предоставить «пользователям» соответствующие разрешения (или IIS_IUSRS, в зависимости от настроек)

Вален
источник
6

Эмм. Я переместил свой сайт / файлы в другую папку. Без изменения пути на сайте IIS.

Вы все можете смеяться сейчас.

Фредерик Струк-Шёнинг
источник
6

Убедитесь, что у пула приложений установлена ​​правильная версия фреймворка. Вам также необходимо убедиться, что пользователи aspnet, IIS_IUSRS или IUSR имеют доступ для чтения к каталогу приложения.

Джефф Тернер
источник
Как я могу это сделать?? «Убедитесь, что ваши пользователи aspnet или IUSR имеют доступ для чтения к каталогу приложения»
Yasmeen
5
перейдите в C: \ Users \ Yasso \ Documents \ Visual Studio 2008 \ WebSites \ WebSite5 \ и убедитесь, что каталог WebSite5 имеет разрешения на чтение для групп IUSR и IIS_IUSRS. Это можно сделать, щелкнув правой кнопкой мыши по каталогу и выбрав свойства, затем перейдя на вкладку безопасности.
Джефф Тернер
Но я не вижу группы IUSR и IIS_IUSRS в группе или имени пользователя !! я не знаю в чем проблема ??
Ясмин
1
Вы видите вариант для сетевого сервиса? по умолчанию это то, что пул приложений будет использовать, когда вы работаете на своем рабочем столе (если я правильно помню)
Джефф Тернер
1
когда вы переходите на вкладку безопасности, после того, как вы щелкнули правой кнопкой мыши по папке и выбрали свойства. Нажмите кнопку «Добавить», после чего появится другое окно с кнопкой «Редактировать». Нажмите кнопку «Редактировать» и введите «Сетевой сервис» в текстовое поле. Он должен найти пользователя и добавить его в список. Затем убедитесь, что пользователь имеет привилегии Read как минимум.
Джефф Тернер
4

Это также случилось со мной, когда у меня был документ по умолчанию с тем же именем (например, index.aspx), указанный как в моем файле web.config, так и на моем веб-сайте IIS. В итоге я удалил запись с веб-сайта IIS и сохранил запись web.config, как показано ниже:

<system.webServer>
  <defaultDocument>
    <files>
      <add value="index.aspx" />
    </files>
  </defaultDocument>...
theJerm
источник
4

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

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

eagle779
источник
NB: динамическое сжатие находится в списке «функций Windows», а не MPI
Simon_Weaver,
@Simon_Weaver фактически динамическое сжатие находится в списке вещей, которые MPI установит для вас, и было с 2012 года, возможно, даже до этого. веселит.
eagle779
4

Попробуйте установить подкомпонент IIS «Разработка приложений», как указано в этой статье.

  • Нажмите кнопку «Пуск» в окне поиска, введите «Включить или отключить функции Windows»
  • в окне функций нажмите: «Информационные службы Интернета»
  • Нажмите: "Услуги всемирной паутины"
  • Нажмите: «Особенности разработки приложений»
  • Проверьте (включите) функции. Я проверил все, кроме CGI.

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

IsaacBok
источник
3

Вам необходимо установить разрешение для папки вашего сайта или скопировать их в папку wwwroot :) - Если установлено разрешение, есть 2 способа: + Щелкните правой кнопкой мыши папку вашего сайта + Или щелкните правой кнопкой мыши свой сайт в IIS => выберите Изменить разрешение и добавить разрешение (IUSR - по умолчанию пользователь iis) Удачи ;-)

SownRocker
источник
В моем случае - iis 8, это были Аутентифицированные пользователи.
наследник
3

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

скриншот настройки приложения

chengbo
источник
3

У меня возникла проблема, когда я скопировал файл web.config из prod, изменил все, что не связано с prod, кроме правил перезаписи, которые переписывались на http S .

Убрал эти правила и работал нормально.

Дано
источник
2

Довольно просто, IIS не имеет доступа к вашему web.config. Я бы начал с того, что вынул сайт из папки с вашими документами. Убедитесь, что у него есть права доступа.

OnResolve
источник
Я перемещаю сайт из Документа в другое место, но появляется та же ошибка
Yasmeen
2

У меня тоже была похожая проблема, и я исправил ее, комментируя некоторые разделы в файле web.config.

Проект был ранее построен и развернут в .Net 2.0. После миграции на .Net 3.5 он начал выдавать исключение.

Решения:

Если ваш файл конфигурации содержит «< sectionGroup name =» system.web.extensions > », прокомментируйте его и запустите, так как этот раздел уже доступен в Machine.config.

Мунна Сингх
источник
2

Вы можете получить эту ошибку, если у вас есть ошибка synax или проблема в вашем файле web.config.

Для меня это был случайный амперсанд в URL, который я использовал в AppSettings.

Тим П.
источник
Я также получил это с паролем в строке подключения, который имел & - кодирование в & amp; избавил меня от этой проблемы. Спасибо, это единственный ответ, который не нужно делать с разрешениями.
Джереми Томпсон
2

На странице ошибки IIS 7.5 вы получаете «Просмотреть дополнительную информацию» внизу страницы, и в этом случае вы перейдете по следующей ссылке Microsoft:

http://support.microsoft.com/kb/942055

The 0x80070005 Код ошибки, по-видимому, связан с разрешениями, и, следуя шагам, описанным в Резолюции 2, метод 2, назначающий правильные учетные записи с разрешениями для соответствующих папок, должен исправить это - я потратил 3 дня на поиск решения, пока не наткнулся на него, и сразу же работал.

kbbucks
источник
2

Эта проблема связана с подключенными дисками, IIS не работает с подключенными дисками. Просто используйте несопоставленный диск.

Роб Седжвик
источник
2

Изучите папку, в которой хранится ваш веб-сайт, и увидите, что у вас есть еще одна папка «aspnet_client», удаляющая эту папку, и она будет работать для вас.

Я попробовал это, моя проблема решена.

Если это работает для вас, пожалуйста, сделайте это как ответ, чтобы какое-то другое тело также получило решение.

Рахул Сононе
источник
1

Ничто из этого не сработало для меня, но у меня наконец есть решение, которое сработало для меня:

удалите эту строку в web.config:

<compilation debug="true" targetFramework="4.5"/>

не удаляйте эту строку

<compilation debug="true"/>
Лука Стиб
источник
1

Добавьте в учетную запись локальную учетную запись IIS_IUSRS и предоставьте им доступ на чтение / выполнение. это работает в моем случае.

user3534355
источник