Вопрос или проблема
У меня есть тестовый сервер и продакшн-сервер, на которых размещен веб-сайт .netcore2.1
. На тестовом сервере я могу получить доступ к веб-сайту и публиковать его с помощью MSDeploy без каких-либо проблем.
На продакшн-сервере я могу корректно публиковать из Visual Studio, все настроено так же, как и на тестовом сервере, но у меня возникает следующая ошибка, когда я пытаюсь открыть веб-сайт:
Ошибка Http 500.19
Код ошибки 0x8007000d
Конфигурационный файл \\?\C:\MySite\web.config
У меня одинаковая конфигурация на обоих серверах, одна и та же версия программы, web deploy 3.6 и установлен модуль URL rewrite.
Единственное видимое отличие заключается в Службах, где Служба агента развертывания веба не отображается на продакшн-сервере. Тем не менее, я проверял это в процессе установки Webdeploy.
Интересная вещь: Когда я публикую с опцией “самостоятельный”, веб-сайт отображается, поэтому я подозреваю, что чего-то не хватает, но я не могу найти, чего именно.
Я пробовал много способов, ищя на форумах и в документации Microsoft, но ничего не решает эту проблему.
У меня была точно такая же проблема с веб-сайтом CyberArk (на IIS10) для службы мониторинга балансировщика нагрузки. После установки веб-сайта восстановление пакета MS .NET Core 3.1.22 решило проблему.
Ответ или решение
Ошибка IIS 8.5 при работе с web.config
Ваша ситуация с ошибкой Http Error 500.19 на производственном сервере, содержащим веб-приложение на .NET Core 2.1, действительно требует внимательного анализа. Давайте разберем возможные причины и шаги для их устранения.
1. Анализ кода ошибки
Код ошибки 0x8007000d обозначает, что конфигурационный файл в формате XML является недействительным. Это может означать, что в файле web.config
присутствуют синтаксические ошибки или недопустимые атрибуты. Чтобы устранить эту проблему:
-
Проверьте файл web.config: Убедитесь, что файл не содержит синтаксических ошибок. Используйте валидатор XML для проверки файла на наличие неверного формата или проблем с кодировкой.
-
Сравните с тестовым сервером: Если на тестовом сервере все работает, пересмотрите содержимое
web.config
на обоих серверах и убедитесь в их полной идентичности.
2. Различия в конфигурации
Вы упомянули, что настройки серверов идентичны, но отсутствие службы Web Deployment Agent Service на производственном сервере может указывать на проблему. Эту службу важно установить и запустить, чтобы обеспечить корректное применение конфигураций.
-
Установка службы: Попробуйте переустановить Web Deploy, убедившись, что служба правильно зарегистрирована и работает. Можно проверить статус службы с помощью команды:
Get-Service -Name "msdeploy"
Если служба не установлена, загрузите установочный файл Web Deploy и следуйте инструкциям установщика.
3. Проверка прав доступа
Проблемы с доступом на уровне файловой системы могут также вызвать ошибку 500.19. Убедитесь, что учетная запись службы приложения (например, IIS AppPool\YourAppPoolName) имеет доступ на чтение к файлу web.config
и другим ресурсам в директории приложения.
- Настройка прав: Пройдите следующие шаги:
- Откройте свойства папки, содержащей ваше веб-приложение.
- Перейдите на вкладку Безопасность.
- Убедитесь, что учётная запись пула приложений имеет права на чтение.
4. Публикация с опцией "Self-contained"
Как вы уточнили, приложение работает корректно при публикации с использованием опции "Self-contained". Это может указывать на то, что на производственном сервере может отсутствовать необходимая версия ASP.NET Core Hosting Bundle.
- Установите ASP.NET Core Hosting Bundle: Для .NET Core 2.1 нужно убедиться, что на сервере установлен соответствующий хостинг-бандл. Вы можете скачать его с официального сайта Microsoft.
5. Логи и дальнейший анализ
Если вышеуказанные шаги не решили проблему, потребуется дополнительный анализ:
-
Проверьте журналы событий Windows: Откройте "Просмотр событий" на сервере и посмотрите, нет ли записей с более детальной информацией о возникшей ошибке.
-
Включите детализированное сообщение об ошибках в IIS: Это можно сделать, изменив настройки веб-приложения в IIS, чтобы отобразить подробные ошибки.
Заключение
Ошибки конфигурации в IIS могут быть особенно сложны для диагностики. Рекомендуем вам следовать вышеописанным шагам, и если проблема не будет решена, рассмотрите возможность обращения за помощью к поддержке Microsoft или на профильные форумы, предоставляя как можно больше информации о вашей конфигурации и выполненных действиях.
Соблюдение этих рекомендаций поможет вам быстро устранить ошибку и восстановить работоспособность вашего веб-приложения.