HTTP Ошибка 500.19 – Внутренняя ошибка сервера для приложения ASP.NET Core 3.1.0 MVC, развернутого на IIS версии 10

Вопрос или проблема

Вот детали о нашей среде разработки:

  • 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):

https://dotnet.microsoft.com/download/dotnet-core/3.1

Ответ или решение

Ошибка HTTP 500.19 – Внутренняя ошибка сервера в ASP.NET Core 3.1.0 MVC приложении, развернутом на IIS (в данном случае версии 10), свидетельствует о том, что сервер не может обработать запрос из-за недействительных конфигурационных данных. Данная проблема может быть вызвана несколькими факторами, но в вашем случае она была решена установкой хостингового пакета .NET Core на сервере.

Шаги для решения проблемы

  1. Проверьте, установлен ли .NET Core Hosting Bundle:

    • Прежде всего, убедитесь, что на вашем сервере установлен хостинг-пакет .NET Core, соответствующий вашей версии приложения. Для ASP.NET Core 3.1 необходимо установить .NET Core Hosting Bundle, который можно скачать по следующей ссылке:
      Скачать .NET Core 3.1 Hosting Bundle.
  2. Установка хостинг-пакета:

    • Скачайте и установите .NET Core Hosting Bundle на сервер. Это необходимо для правильной работы приложений ASP.NET Core под управлением IIS.
    • После установки перезагрузите сервер, чтобы изменения вступили в силу.
  3. Настройка веб.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 указывает на правильный исполняемый файл вашего приложения.
  4. Проверка разрешений:

    • Убедитесь, что IIS имеет необходимые разрешения для доступа к физическому пути вашего приложения. Это может быть сделано путем установки разрешений на папку с вашим приложением для пользователя, под которым запускается процесс IIS (обычно это IIS_IUSRS).
  5. Проверка логов:

    • Включите ведение журналов для диагностики ошибок. Установите stdoutLogEnabled="true" в вашем web.config, чтобы получить логи вывода стандартного потока. Логи помогут вам лучше понять, что именно вызывает ошибку.
  6. Тестирование:

    • После выполнения всех шагов повторно разверните ваше приложение и протестируйте его доступность через браузер.

Заключение

Устранение ошибки HTTP 500.19 частично связано с правильной установкой и конфигурацией .NET Core на сервере, а также с корректной настройкой файла web.config. Убедившись в том, что все указанные шаги выполнены, вы должны успешно запустить ваше ASP.NET Core приложение на IIS.

Оцените материал
Добавить комментарий

Капча загружается...