Вопрос или проблема
Вот детали о нашей среде разработки:
- DevExpress 20.2.3 (мы используем DevExtreme)
- Microsoft Visual Studio Enterprise 2019 (Версия 16.4.6)
- ASP.NET Core 3.1.0
- AspNetCore.Mvc 3.1.0.0
- Microsoft SQL Server 2008 R2 (RTM)
- dotnet –version 3.1.300
Детали нашей среды развертывания сервера:
- Windows Server 2016 Standard 64-битная ОС
- dotnet –version 3.1.300
- Версия IIS 10
Мы планируем использовать сборку и развертывание/упаковку с помощью командной строки dotnet:
Microsoft Windows [Версия 10.0.17763.1697] (c) 2018 корпорация Microsoft. Все права защищены.
C:\Windows\system32>D:
D:>%comspec% /k “C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Tools\VsDevCmd.bat”
** Командная строка разработчика Visual Studio 2019 v16.8.2
** Авторские права (c) 2020 корпорация Microsoft
D:>cd D:\AppCodeArena\StrangeAcmeApplication\
D:\AppCodeArena\StrangeAcmeApplication>dotnet –version
3.1.300
D:\AppCodeArena\StrangeAcmeApplication>dotnet clean
…..Вывод…ещё…ещё…ещё…Вывод… 0 ошибок
D:\AppCodeArena\StrangeAcmeApplication>dotnet build -c Release
–runtime win10-x64 .\StrangeAcmeApplication.Uploaders.sln…..Вывод…ещё…ещё…ещё…Вывод… 0 ошибок
D:\AppCodeArena\StrangeAcmeApplication>dotnet publish
.\src\StrangeAcmeApplication.Uploaders\StrangeAcmeApplication.Uploaders.csproj
–runtime win10-x64 –no-build -c Release –output .\PublishedDirectory /p:DebugType=None /p:DebugSymbols=false
/p:EnvironmentName=Development –self-contained true Microsoft (R)
Build Engine version 16.6.0+5ff7b0c9e для .NET Core Авторское право (C)
Корпорация Майкрософт. Все права защищены.StrangeAcmeApplication.Uploaders ->
D:\AppCodeArena\StrangeAcmeApplication\PublishedDirectory\
В файле .\PublishedDirectory\appsettings.json содержится следующий контент:
{ “Logging”: {
“LogLevel”: {
“Default”: “Information”,
“Microsoft”: “Warning”,
“Microsoft.Hosting.Lifetime”: “Information”
} }, “AllowedHosts”: “*” }
В файле .\PublishedDirectory\appsettings.Development.json содержится следующий контент:
{ “Logging”: {
“LogLevel”: {
“Default”: “Information”,
“Microsoft”: “Warning”,
“Microsoft.Hosting.Lifetime”: “Information”
} }, “ConnectionStrings”: {
“dbConnectionString”: “Data Source=BlahSQLServerBlah;Initial Catalog=BlahDatabaseInstanceBlah;Persist Security Info=True;User
ID=blahUserNameblah;Password=blahblah”} }
Наконец, в файле .\PublishedDirectory\web.config у нас есть следующий контент:
< ?xml version="1.0" encoding="utf-8"?> <configuration> <location path="." inheritInChildApplications="false" >
< system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath=".\InvestorCentral.Uploaders.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess">
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
</environmentVariables>
</aspNetCore>
</system.webServer> </location> </configuration>
Тем не менее, я постоянно получаю следующую ошибку при развертывании на сервере IIS:
HTTP ошибка 500.19 – Внутренняя ошибка сервера
Запрошенная страница не может быть доступна, потому что связанные
конфигурационные данные для страницы недействительны.Подробная информация об ошибке:
Модуль IIS Web Core
Уведомление Неизвестно
Обработчик Всё ещё не определён
Код ошибки 0x8007000d
Ошибка конфигурации
Конфигурационный файл
\?\D:\webSites\StrangeAcmeApplication.Published\web.configЗапрашиваемый URL http://localhost:32769/
Физический путь
Метод входа Неизвестно
Пользователь для входа Неизвестно
Источник конфигурации: -1:
0:
@lex-li и @yiyi-you Спасибо за ваши комментарии.
Мне как-то неловко, потому что проблема заключалась в том, что на сервере, о котором идет речь, необходимо было установить .NET Core Hosting Bundle
(в моем случае это конкретно .NET Core 3.1.12 Hosting Bundle для x64):
Ответ или решение
Ошибка HTTP 500.19 – Внутренняя ошибка сервера в ASP.NET Core 3.1.0 MVC приложении, развернутом на IIS (в данном случае версии 10), свидетельствует о том, что сервер не может обработать запрос из-за недействительных конфигурационных данных. Данная проблема может быть вызвана несколькими факторами, но в вашем случае она была решена установкой хостингового пакета .NET Core на сервере.
Шаги для решения проблемы
-
Проверьте, установлен ли .NET Core Hosting Bundle:
- Прежде всего, убедитесь, что на вашем сервере установлен хостинг-пакет .NET Core, соответствующий вашей версии приложения. Для ASP.NET Core 3.1 необходимо установить .NET Core Hosting Bundle, который можно скачать по следующей ссылке:
Скачать .NET Core 3.1 Hosting Bundle.
- Прежде всего, убедитесь, что на вашем сервере установлен хостинг-пакет .NET Core, соответствующий вашей версии приложения. Для ASP.NET Core 3.1 необходимо установить .NET Core Hosting Bundle, который можно скачать по следующей ссылке:
-
Установка хостинг-пакета:
- Скачайте и установите .NET Core Hosting Bundle на сервер. Это необходимо для правильной работы приложений ASP.NET Core под управлением IIS.
- После установки перезагрузите сервер, чтобы изменения вступили в силу.
-
Настройка веб.config:
- Убедитесь, что ваш файл
web.config
правильно настроен. В вашем случае файл выглядит корректно:<?xml version="1.0" encoding="utf-8"?> <configuration> <location path="." inheritInChildApplications="false"> <system.webServer> <handlers> <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" /> </handlers> <aspNetCore processPath=".\StrangeAcmeApplication.Uploaders.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess"> <environmentVariables> <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" /> </environmentVariables> </aspNetCore> </system.webServer> </location> </configuration>
- Проверьте, что
processPath
указывает на правильный исполняемый файл вашего приложения.
- Убедитесь, что ваш файл
-
Проверка разрешений:
- Убедитесь, что IIS имеет необходимые разрешения для доступа к физическому пути вашего приложения. Это может быть сделано путем установки разрешений на папку с вашим приложением для пользователя, под которым запускается процесс IIS (обычно это
IIS_IUSRS
).
- Убедитесь, что IIS имеет необходимые разрешения для доступа к физическому пути вашего приложения. Это может быть сделано путем установки разрешений на папку с вашим приложением для пользователя, под которым запускается процесс IIS (обычно это
-
Проверка логов:
- Включите ведение журналов для диагностики ошибок. Установите
stdoutLogEnabled="true"
в вашемweb.config
, чтобы получить логи вывода стандартного потока. Логи помогут вам лучше понять, что именно вызывает ошибку.
- Включите ведение журналов для диагностики ошибок. Установите
-
Тестирование:
- После выполнения всех шагов повторно разверните ваше приложение и протестируйте его доступность через браузер.
Заключение
Устранение ошибки HTTP 500.19 частично связано с правильной установкой и конфигурацией .NET Core на сервере, а также с корректной настройкой файла web.config
. Убедившись в том, что все указанные шаги выполнены, вы должны успешно запустить ваше ASP.NET Core приложение на IIS.