【问题标题】:AspNetCoreModuleV2 issue .NET Core 3.0AspNetCoreModuleV2 问题 .NET Core 3.0
【发布时间】:2020-01-15 23:26:25
【问题描述】:

希望有人可以帮助解决这个问题:

我已在 Azure 上部署了我的 .NET Core 3.0 应用程序,即使它显示“发布成功”。应用程序未加载(http 500,服务器错误)。 Azure 中的“诊断和解决问题”选项卡指向模块“AspNetCoreModuleV2”,如图所示 Azure - Diagnose and solve problems

我试过了:

  • 按照此处的建议安装 .NET 3.0 Runtime Hosting Bundle aspNetCore 2.2.0 - AspNetCoreModuleV2 error

  • 将 web.config 文件中的 modules="AspNetCoreModuleV2" 更改为 modules="AspNetCoreModule",但一旦我发布应用程序,该文件就会恢复为原始值。

  • <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel> 添加到csproj,但没有任何区别,因此我已将其删除

这是我当前的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-->

顺便说一句,应用程序在本地机器上运行没有任何问题

非常感谢任何可以为我指明正确方向的帮助。

【问题讨论】:

    标签: c# asp.net-mvc azure asp.net-core asp.net-core-3.0


    【解决方案1】:

    编辑你的 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 引起的

    【讨论】:

      【解决方案2】:

      我尝试过以“自包含”的形式发布并修改 web.config,但是没有任何效果。

      经过进一步研究,我发现了 Azure 中的“应用服务编辑器”工具。查看输出错误,我意识到问题与数据库防火墙阻止“我的”IP 有关。我之前用我的 IP 添加了一条规则,但是,由于某种原因,错误消息中显示的 IP 与我的实际 IP 不同。一旦我用这个 IP 在数据库上添加了另一个规则,它就立即起作用了。

      另一个奇怪的是,“诊断和解决问题”工具(AspNetCoreModuleV2)报告的错误与实际问题没有太大关系。

      感谢大家花时间回答我的问题。

      【讨论】:

      • 将我的 Key Vault 上的防火墙配置为仅允许从“选定的网络”访问,这在我的 .NET Code 3.0 应用程序上触发了错误“500.30 In-Process Startup Failure”。将 Key Vault FW 切换回所有网络解决了该问题。
      【解决方案3】:

      检查PublishProfiles 文件夹(在Properties 内)并确保您拥有:

      <SelfContained>true</SelfContained>
      

      独立的应用程序随应用程序分发运行时。

      【讨论】:

        【解决方案4】:

        您可以尝试直接在 Azure 上更改 web.config,因此当您部署应用程序时,请转到 web.config 并将 AspNetCoreModuleV2 替换为 AspNetCoreModule。直接更改 web.config 会重启应用轮询,只是为了了解问题所在。

        请参阅同一篇文章,并提供可能的解决方案:

        AspNetCore 3.0 - HTTP Error 500.0 - ANCM In-Process Handler Load Failure

        【讨论】:

        • 我想过做类似的事情,但是,我不确定在 Azure 中的哪里可以直接找到 web.config?
        • 我觉得改起来不容易,不然你有没有尝试将应用部署为Self-Contained?
        • 我试图避免部署为独立的,因为它似乎不是最好的选择(基于 Microsoft 网站上的文档),但我想我必须这样做试试看……
        猜你喜欢
        • 2020-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多