Проблема AspNetCoreModuleV2 .NET Core 3.0

Надеюсь, что кто-то может помочь с этой проблемой:

Я развернул свое приложение .NET Core 3.0 в Azure, и даже несмотря на то, что оно показывает «Публикация выполнена успешно». приложение не загружается (http 500, ошибка сервера). Вкладка «Диагностика и решение проблем» в Azure указывает на модуль «AspNetCoreModuleV2», как показано на рисунке Azure - Диагностировать и решать проблемы

Я пробовал:

Вот мой текущий csproj файл:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <Folder Include="wwwroot\" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="3.0.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.0.1" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.0.1">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.0.1" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer.Design" Version="1.1.6" />
    <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.0.1" />
    <PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.1.0-preview1-final" />
  </ItemGroup>

</Project>

Вот так выглядит мой 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="dotnet" arguments=".\SportsStore.dll" stdoutLogEnabled="false" stdoutLogFile="\\?\%home%\LogFiles\stdout" hostingModel="inprocess" />
    </system.webServer>
  </location>
</configuration>
<!--ProjectGuid: 3f1b616a-5c07-4b23-9c86-ec6506dc3fa7-->

Кстати, приложение работает без проблем на локальной машине.

Мы высоко ценим любую помощь, которая может указать мне правильное направление.


person user12427270    schedule 25.11.2019    source источник


Ответы (4)


Отредактируйте ваш csproj

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
    <AspNetCoreModuleName>AspNetCoreModuleV2</AspNetCoreModuleName>
..

таким образом во время dotnet publish задача TransformWebConfig преобразует ваш web.config следующим образом, что также работает в Azure WebApp

<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet" arguments=".\assembly.dll" hostingModel="OutOfProcess" />
    </system.webServer>
  </location>
</configuration>

В Azure WebApp ошибка HTTP Error 500.31 - ANCM Failed to Find Native Dependencies, по всей видимости, вызвана InProcess моделью хостинга и модулем AspNetCoreModuleV2

person romi    schedule 15.01.2020

Я пробовал публиковать как «автономные» и изменять web.config, но ничего не помогло.

После дальнейшего исследования я узнал об инструменте «Редактор службы приложений» в Azure. Посмотрев на ошибки вывода, я понял, что проблема связана с брандмауэром базы данных, блокирующим "мой" IP-адрес. Ранее я добавил правило для своего IP-адреса, однако IP-адрес, показанный в сообщении об ошибке, по какой-то причине отличался от моего фактического IP-адреса. Как только я добавил еще одно правило в базу данных с этим IP-адресом, оно сразу заработало.

Еще одна странность заключается в том, что ошибка, сообщаемая инструментом «Диагностика и устранение проблем» (AspNetCoreModuleV2), не имеет большого отношения к реальной проблеме.

Спасибо всем, что нашли время ответить на мой вопрос.

person user12427270    schedule 26.11.2019
comment
Настроил брандмауэр в моем Key Vault, чтобы разрешить доступ только из выбранных сетей, что вызвало ошибку 500.30 In-Process Startup Failure в моем приложении .NET Code 3.0. Переключение прошивки Key Vault обратно на все сети устранило проблему. - person Jussi Palo; 09.12.2019

Проверьте папку PublishProfiles (внутри Properties) и убедитесь, что у вас есть:

<SelfContained>true</SelfContained>

Автономное приложение распределяет среду выполнения вместе с приложением.

person Jazb    schedule 25.11.2019

Вы можете попробовать изменить web.config непосредственно в Azure, поэтому при развертывании приложения перейдите в web.config и замените AspNetCoreModuleV2 на AspNetCoreModule. Изменение web.config напрямую приведет к перезапуску опроса приложения, чтобы понять, в чем проблема.

См. Ту же статью с возможными решениями:

AspNetCore 3.0 - Ошибка HTTP 500.0 - Ошибка загрузки внутреннего обработчика ANCM

person Emin Mesic    schedule 25.11.2019
comment
Я думал о том, чтобы сделать что-то вроде того, но я не уверен, где найти web.config прямо в Azure? - person user12427270; 25.11.2019
comment
Я думаю, что это непросто изменить, а то вы пробовали развернуть приложение как автономное? - person Emin Mesic; 25.11.2019
comment
Я пытался избежать автономного развертывания, так как это не кажется лучшим вариантом (исходя из документации на веб-сайте Microsoft), но я думаю, что мне придется попробовать это ... - person user12427270; 25.11.2019