Ошибка "Unable to access the IIS metabase" при запуске ASP.NET приложения
Причина ошибки
Ошибка "Unable to access the IIS metabase" возникает, когда ваш проект настроен на использование локального IIS (не IIS Express), но у текущего пользователя Windows нет прав на чтение метабазы IIS. Метабаза — это хранилище конфигурации IIS (для IIS 6 и старше) или файл applicationHost.config (для IIS 7+). Visual Studio пытается получить доступ к этому файлу, чтобы зарегистрировать ваше приложение, но система блокирует доступ.
Решение: переключение на IIS Express
Самый простой и безопасный способ — переключить проект обратно на IIS Express. Вот пошаговая инструкция:
- Закройте Visual Studio.
- Откройте файл проекта (с расширением
.csproj) в любом текстовом редакторе (например, Notepad++). - Найдите строку, содержащую
<UseIIS>или<UseIISExpress>. Обычно она выглядит так:
<UseIIS>True</UseIIS>
<UseIISExpress>False</UseIISExpress>
Измените значения на:
<UseIIS>False</UseIIS>
<UseIISExpress>True</UseIISExpress>
- Сохраните файл и закройте редактор.
- Откройте проект в Visual Studio снова.
- Нажмите Ctrl+F5 для запуска. Приложение должно запуститься без ошибок.
Альтернативное решение: дать права на IIS метабазу
Если вам обязательно нужно использовать локальный IIS (например, для отладки с реальными настройками IIS), выполните следующие шаги:
- Запустите командную строку от имени администратора.
- Выполните команду для предоставления прав вашему пользователю:
%windir%\system32\inetsrv\appcmd set config /section:system.applicationHost /section:system.webServer /section:system.ftpServer /section:system.smtpServer /commit:apphost
Или, если у вас IIS 6 (что маловероятно на Windows 10), используйте:
cscript %windir%\system32\adsutil.vbs SET /W3SVC/AnonymousUserName "NT AUTHORITY\NETWORK SERVICE"
- Проверьте, что ваш пользователь входит в группу IIS_IUSRS. Для этого:
- Нажмите
Win+R, введитеlusrmgr.msc. - Перейдите в "Группы" → "IIS_IUSRS" → "Добавить".
- Добавьте вашу учётную запись Windows.
- Перезагрузите компьютер или перезапустите службу IIS (
iisresetв командной строке администратора).
Дополнительные советы
- Убедитесь, что у вас установлен компонент "Службы IIS" в Windows: Панель управления → Программы и компоненты → Включение или отключение компонентов Windows. Должны быть отмечены хотя бы базовые компоненты, включая "Консоль управления IIS".
- Если вы используете Visual Studio 2022, попробуйте сбросить настройки IIS Express: закройте студию, удалите папку
%userprofile%\Documents\IISExpressи запустите проект снова. - В редких случаях помогает переустановка Visual Studio с опцией "Восстановление" (Repair) из установщика.
После выполнения этих шагов ошибка должна исчезнуть. Если проблема остаётся — проверьте, не блокирует ли антивирус доступ к конфигурационным файлам IIS.
<<Дополнительный подход: использование netsh для прав доступа
Если предыдущие методы не помогли, проблема может быть связана с тем, что ваш пользователь не имеет права на прослушивание HTTP-трафика (URL reservation). Это актуально для Windows 10 и выше, где требуется явное разрешение.
Решение через netsh
- Откройте командную строку от имени администратора.
- Выполните команду для добавления вашего пользователя в список разрешённых:
netsh http add urlacl url=http://localhost:12345/ user=ИМЯ_ВАШЕГО_ПОЛЬЗОВАТЕЛЯ
Замените localhost:12345 на порт, который использует ваше приложение (узнать можно в свойствах проекта → Web → Project Url).
- Если вы не знаете точный порт, можно добавить сразу диапазон:
netsh http add urlacl url=http://+:80/ user=ИМЯ_ПОЛЬЗОВАТЕЛЯ
Проверка существующих разрешений
Чтобы увидеть, какие URL уже зарезервированы, выполните:
netsh http show urlacl
Найдите строку с вашим портом. Если там указан только NT SERVICE\ALL SERVICES или BUILTIN\Administrators, добавьте свою учётную запись.
Этот метод особенно полезен, если вы работаете в корпоративной среде, где права на IIS ограничены политиками безопасности.
Ответов пока нет.
Войдите чтобы оставить ответ
Блоги