Доступ до потрібної сторінки не можна отримати, оскільки пов’язані дані конфігурації для цієї сторінки є помилковою помилкою


479

Я хочу завантажити власний веб-сайт asp.net на IIS разом із менеджером IIS. Але коли я це роблю, я отримую таку помилку

Помилка HTTP 500.19 - Внутрішня помилка сервера Доступ до запитуваної сторінки неможливо, оскільки пов’язані дані конфігурації для сторінки недійсні

Модуль IIS
Повідомлення веб-ядра Невідомий
обробник Ще не визначено
Код 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
У мене виникла проблема переміщення сайту на сервер, на якому не встановлений модуль перезапису URL-адреси IIS.
Скотт

1
Це може статися, якщо ви перейменували ваш сервер. Я зробив це для себе - і в кінцевому підсумку довелося просто зайти (Windows Server 2012 R2) і знову додати IIS APPPOOL \ SiteName ... і це на 100% виправило це.
Майкл К. Кемпбелл

2
якщо ви новачок у розгортанні програм ASP.NET Core на старшому сервері 2008 R2, вам потрібно встановити пакет хостингу .NET Core Windows Server - як я дізнався у цій відповіді
bkwdesign

Відповіді:


178

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

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

Права доступу повинні бути досить простими, тобто принаймні читати , і, залежно від вашої програми, можливо, написати .

Вище ви згадуєте IUSR тощо, що не знаходиться у властивостях для web.config. Якщо ви маєте на увазі, що IUSR не вказаний на вкладці безпеки файлу, то це добре. Не хочеться давати IUSR будь-якого дозволу на web.config . Роль IUSR - анонімний користувач Інтернету.

Файл web.config повинен бути доступний лише через вашу програму.

Проблема полягає в тому, що ви не сказали, яку версію ОС та IIS використовуєте, тому важко порадити, які кроки потрібно зробити.

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


3
Чи можу я надати цей дозвіл програмно? Будь ласка, допоможіть. У мене така ж проблема.
pcbabu

1
Дякую, це вирішило і мою проблему. Я використовую себе, що, мабуть, обумовлює необхідність привласнення дозволів READ в каталозі програми для підробленого облікового запису.
Сезар

2
Я продовжую отримувати "Не вдалося перерахувати об'єкти в контейнері. Доступ заборонено." Після того, як я даю дозвіл
RollRoll

4
Клацніть правою кнопкою миші на папці, на яку потрібно дати дозвіл на безпеку. Це коренева папка, в якій публікується ваша програма, і це та сама папка, що і фізичний шлях вашого веб-сайту IIS. Виберіть властивості у контекстному меню та натисніть на вкладку Безпека. Відредагуйте користувачів, а потім додайте користувача. Натисніть кнопку "Місцеположення" та виберіть верхню піктограму (схожа на "Мій комп'ютер"). У текстовій області введіть IIS_IUSRS. Натискайте ОК кілька разів, поки не закриються всі контекстні меню. Перезавантажте веб-сайт і перейдіть на нього знову.
Джеремі Рей Браун

Якщо ви не хочете з’ясувати дозволи на фізичний шлях веб-сайту, тоді дайте дозвіл усім! Це швидкий і не рекомендований злом для доступу до всіх фізичних файлів / папок.
Джеремі Рей Браун

660

Це також може статися, якщо сайт налаштований на використання модуля перезапису URL-адреси IIS, але він не встановлений.


Це було для мене .. видалили переписати розділ (який насправді взагалі не потребував) і все добре.
Ендрю Паттерсон

129
Гарно зіграно. <rant> Було б добре, якщо IIS видасть помилку "Я не розумію, що таке <запис>", а не скаржиться на неправильно сформований XML. </rant>
Еван Хаас

7
Дуже дякую - це було і моє питання. Модуль перезапису використовується, якщо ви бачите тег <rewrite>. Можна подумати, що IIS може сказати вам, що не можна розібрати.
scolestock

6
Хороший простий спосіб вирішити відсутність залежності в командному рядку; webpicmd / Установка / Продукти: UrlRewrite2
перисті

2
Я просто хотів би зазначити, що якщо ваш web.config містить тег <rewrite>, то вам потрібен модуль переписати.
Jono

436

Нарешті я отримав рішення для своєї проблеми. Обліковий запис ASP.net не з’явився в менеджері IIS, тому що я не встановив прапорець у IIS. Для цього в Windows 7 виконайте наступні дії:

  1. Відкрити панель управління
  2. Клацніть на посилання "program" (не видаляйте програми)
  3. Клацніть посилання «включити / вимкнути функції Windows»
  4. У спливаючому вікні знайдіть “Інформаційні послуги Інтернету IIS” та розгорніть його вузол
  5. Розгорніть вузол «World Wide Web Service»
  6. Розгорніть вузол «Особливості розробки додатків»
  7. Поставте прапорець "ASP.NET"
  8. Потім натисніть кнопку ОК

Тепер ви побачите обліковий запис ASP.net у менеджері IIS, а за замовчуванням ви побачите обліковий запис IIS. Тепер вам слід перенести веб-сайт ASP.net з "мого документа" в інше місце, де IIS має дозвіл на доступ до нього (тобто до іншого розділу на вашому комп'ютері). Тепер перегляньте свій веб-сайт у менеджера IIS, і він повинен працювати.

Велике спасибі Джеффу Тернеру за рішення.


7
Також вирішено моє. IIS 8, сайт MVC 4.
Стефан Райер

Хтось, мабуть, видалив цю службу ролей із сервера, який працює місяцями. Я б ніколи не здогадувався перевірити це ще раз. Тьфу.
SixOThree

3
Вирішено проблему з MVC 5, IIS 10. Я перевірив усі доступні версії ASP.NET.
FrenkyB

2
Це потрібно позначити як правильну відповідь, Дякую велике
Артур Кеян

1
Дякую ... як вони можуть випустити продукт із таким низьким рівнем повідомлень про помилки?
Вланд

55

У моєму випадку встановлення модуля перезапису URL-адреси IIS вирішило проблему.


це я наступного разу нагадую собі, що саме це зафіксувало для мене. яка жахлива помилка: - /
Simon_Weaver

Я поняття не маю, що це, безумовно, робить, але це працювало на мене. дякую
Скорпіон

Також вирішено моє: WIndows Server 2019, IIS 10
NDB


Кожен раз, коли це відбувається, і кожного разу я забуваю це просте рішення. : D Дякую @Salim
ChiragMS

47

У мене була така ж проблема, ось рішення, яке працювало на мене.

  1. IIS Manager
  2. Клацніть правою кнопкою миші на цьому веб-сайті
  3. Редагувати дозволи
  4. Додано користувача "IIS_IUSRS" на вкладці Безпека
  5. Надати повні дозволи користувачеві "IIS_IUSRS"
  6. Встановіть ідентичність пулу додатків на "ApplicationPoolIdentity"

2
Я б не рекомендував це для виробничих цілей. Я вважаю, що IIS_IUSRS - це анонімний обліковий запис, і ви отримаєте повний доступ до всієї структури каталогу веб-сайту
Жак

Врятував і мій день, як я зрозумів, що дозвіл є винуватцем, я також використав іншу особу apppool, і це спрацювало!
Близько

39

Для розробників Visual Studio (VS): Як натякнули Harvey Darvey, Savage та Snives, ваша конфігурація хоста програми може вказувати на неправильний фізичний шлях програми. Пошук VirtualDirectory в /.vs/config/applicationhost.config змінити physicalPath , якщо це не так.

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

Переконайтеся, що фізичний шлях правильний:

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


3
Ви також можете зробити це саме те, що в проект => властивості => URL-адреса проекту => створити віртуальний каталог, виберіть "Так", щоб перезавантажити правильний фізичний шлях, коли буде запропоновано
Адам Діамент

У моєму випадку було трохи інакше, але це дало мені вказівку. Дякую дуже, мені це дуже допомогло :)
Бхарат

Для цього потрібно підняти вище результати!
Гайбруш Тріпвуд

24

Сповіщення про обличчя:

Ви також отримаєте цю помилку, якщо шлях до конфігураційного файла неправильний. Двічі перевірте це, щоб переконатися, що фізичний шлях введено правильно в IIS.


Як варіант цього, виходить, що я неправильно встановив шлях до самого сайту. Я випадково пройшов карту загальної мережі замість шляху до локального файлу системи.
Девід

2
Був такий самий момент обличчя-долоні. Я перемістив свій веб-сайт у підпапку і подумав, що я правильно набрав новий шлях у IIS. На сайті все ще є всі необхідні папки тощо під ним, що відображаються у дереві в IIS, тому це не спричинило це як причину. Я скинув дозволи тощо, не вирішив. Тоді розмова через питання мені було запропоновано мимохідь ... і тепер у мене знову є робочий сайт після 1 години витраченого часу!
ледігаргар

Де цей шлях встановлений? Це здається моєю проблемою, але я не можу знайти те, що мені потрібно змінити
Дрю Рошон

У середовищі розробки: .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


Простої установки .NET Core SDK недостатньо для запуску веб-сайтів ASP.NET Core під IIS. Я провів кілька годин, працюючи над цією помилкою ...
Ryan Rodemoyer

Це може бути недостатньо, але воно вирішує цю помилку. Працювали для мене. Я припускав, що всі компоненти .NET вже включені.
pcalkins

Так, довелося встановити "Runtime & Hosting Bundle" тут: dotnet.microsoft.com/download/dotnet-core/2.2
Kirk Woll

Гаразд, "автономний" пакет не відповідає його назві.
SLCH000

11

Те саме сталося і зі мною. Спробуйте перевірити це, двічі клацнувши по рядках Connection на правій панелі IIS 7, коли ви вибираєте веб-сайт.

Це дасть вам помилку (що є проблема з веб-конфігураційним файлом), оскільки ви використовували правила перезапису URL-адреси, і відповідний компонент не встановлений.

Встановіть "Модуль перезапису URL-адреси Microsoft для IIS 7", і це повинно вирішити вашу проблему


ДЯКУЮ ТОБІ! У мене ця проблема була два дні, не знайшовши рішення через стільки відповідей на це вище ...
Майкл

9

Ніщо тут не працювало для мене, я знайшов цю команду в іншій відповіді ТА, і це вирішило мою проблему. Просто запустіть командний рядок як адміністратор і запустіть цю команду:

run->cmd

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

Кредит: користувач Vicxx


Щоб виправити своє середовище розробки проти 2017 року, мені довелося видалити IIS з моїх функцій Windows 7. Додайте його назад, оновіть та встановіть усі необхідні речі. Завершальним кроком було запущення regiis з командним рядком Visual Studio 2017. Тепер це все працює знову, на це виправляючи 8 годин часу. uck ..
Warren LaFrance

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

Переконайтеся, що для пулу додатків встановлена ​​правильна версія фреймворку. Вам також потрібно буде переконатися, що ваші користувачі 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
чи бачите ви опцію для послуги мережі? за замовчуванням - це те, що буде використовуватися пулом програм, коли ви працюєте на робочому столі (якщо я пам'ятаю правильно)
Jeff Turner

1
коли ви переходите на вкладку безпеки, після клацання правою кнопкою миші на папці та вибраних властивостей. Натисніть кнопку "Додати", яка повинна породити ще одне вікно кнопкою "Редагувати". Натисніть кнопку "Редагувати" та введіть у текстове поле "Мережева служба". Він повинен знайти користувача та додати його до списку. Потім переконайтеся, що користувач має щонайменше читання привілей.
Джефф Тернер


4

Це трапилося і зі мною, коли у мене був документ з тим самим іменем (як index.aspx), вказаний у моєму файлі web.config І на моєму веб-сайті IIS. Я в кінцевому підсумку видалив запис із веб-сайту IIS і зберігав запис web.config, як показано нижче:

<system.webServer>
  <defaultDocument>
    <files>
      <add value="index.aspx" />
    </files>
  </defaultDocument>...

4

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

Якщо це так, рішенням може бути встановлення та використання Microsoft Platform Installer та встановлення тих відсутніх компонентів - можливо, вам доведеться зробити націлювання на те, що саме пропущено, оскільки журнал помилок та повідомлення не повідомляють вам.


Примітка: динамічне стиснення знаходиться у списку "Функції Windows", а не MPI
Simon_Weaver

@Simon_Weaver насправді динамічне стиснення знаходиться в списку речей, які MPI встановить для вас, і це було з 2012 року, можливо, навіть раніше. ура.
eagle779

4

Спробуйте встановити підрозділ IIS "Розробка додатків", як зазначено в цій програмі SO

  • Натисніть кнопку "Пуск" у вікні пошуку, введіть "Увімкнення та вимкнення функцій Windows"
  • у вікні функцій натисніть: "Інтернет-інформаційні послуги"
  • Клацніть: "World Wide Web Services"
  • Клацніть: "Особливості розробки додатків"
  • Перевірте (увімкніть) функції. Я перевірив усіх, крім CGI.

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


Так було з цілком свіжою установкою IIS. Дякую!
Румен Єков

3

Потрібно встановити дозвіл на папку свого веб-сайту або скопіювати їх у папку wwwroot :) - Якщо встановити дозвіл, є два способи: + Клацніть правою кнопкою миші папку Веб-сайт + Або клацніть правою кнопкою миші на Ваш веб-сайт у IIS => виберіть Редагувати дозвіл та додайте дозвіл (IUSR - користувач iis за замовчуванням) Удачі ;-)


У моєму випадку - це 8, це були аутентифіковані користувачі.
scion

3

У моєму випадку це спричинено фізичною точкою додатка до неіснуючої папки в IIS.

Скріншот налаштування програми


3

У мене виникла проблема, коли я скопіював файл web.config вниз з prod, змінив усе, що не стосується prod, за винятком правил Rewrite, які переписувались на http S .

Видалили ці правила і нормально побігли.


2

Досить прямо, IIS не має доступу до вашого web.config. Я б почав з вивезення сайту із папки ваших документів. Переконайтеся, що він також має дозвіл r / w.


Я переміщую сайт із Документа в інше місце, але з’являється та сама помилка
Yasmeen

2

У мене теж була подібна проблема, і я її виправив, коментуючи деякі розділи у файлі web.config.

Раніше проект був розроблений та розгорнутий у .Net 2.0. Після переходу на .Net 3.5 він почав викидати виняток.

Роздільна здатність:

Якщо ваш файл конфігурації містить "< sectionGroup name =" system.web.extensions > ", прокоментуйте його та запустіть, оскільки цей розділ уже доступний у Machine.config.


2

Ви можете отримати цю помилку, якщо у вашому файлі web.config виникла помилка синаксису або проблема.

Для мене це була бродяча амперсанда в URL-адресі, яку я використовував у AppSettings.


Я також отримав це з паролем у рядку з'єднання, який мав & - кодувати його на & amp; Мене минула ця проблема. Дякую, це єдина відповідь тут не робити дозволів.
Джеремі Томпсон

2

На сторінці помилки IIS 7.5 ви натискаєте "Переглянути додаткову інформацію" внизу сторінки, і в цьому випадку ви перейдете до наступного посилання Microsoft:

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

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


2

отримала цю проблему з картографічними накопичувачами, IIS не працює з відображеними накопичувачами. Просто використовуйте незаписаний диск.


2

Дослідіть папку, де зберігається ваш веб-сайт, і побачите, що ви отримаєте одну додаткову папку "aspnet_client", видаліть цю папку, і вона працюватиме для вас.

Я спробував це, моя проблема вирішена.

Якщо це працює для вас, будь ласка, зробіть це як відповідь, щоб якийсь інший теж отримав рішення.


1

Ніщо з цього не працювало для мене, але я нарешті маю рішення, яке працювало для мене:

видаліть цей рядок у web.config:

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

не видаляйте цей рядок

<compilation debug="true"/>

1

Додайте локальний обліковий запис IIS_IUSRS до безпеки та надайте їм можливість читати / виконувати доступ. що працює на моєму випадку.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.