azure AspNetCoreModuleV2发行版.NET Core 3.0

5tmbdcev  于 2023-06-24  发布在  .NET
关注(0)|答案(5)|浏览(166)

希望有人能帮助解决这个问题:
我已经在Azure上部署了.NET Core 3.0应用程序,尽管它显示“Publish Succceeded”,但应用程序没有加载(http 500,服务器错误)。Azure中的“诊断和解决问题”选项卡指向模块“AspNetCoreModuleV2”,如图Azure - Diagnose and solve problems所示
我试过了

  • 按照此处的建议安装.NET 3.0运行时托管包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-->

顺便说一下,应用程序在本地机器上运行时没有任何问题
任何帮助,可以指出我在正确的方向是高度赞赏。

f87krz0w

f87krz0w1#

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

amrnrhlw

amrnrhlw2#

我试过发布为“自包含”并修改web.config,但是没有任何效果。
经过进一步的研究,我发现了Azure中的“应用服务编辑器”工具。看了一下输出错误,我意识到问题是数据库防火墙阻止了“我的”IP。我以前用我的IP添加了一个规则,但是,由于某种原因,错误消息中显示的IP与我的实际IP不同。一旦我用这个IP在数据库上添加了另一个规则,它就立即起作用了。
另一件奇怪的事情是,“诊断和解决问题”工具(AspNetCoreModuleV2)报告的错误与实际问题没有太大关系。
谢谢大家花时间回答我的问题。

krugob8w

krugob8w3#

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

<SelfContained>true</SelfContained>

自包含的应用程序将运行时与应用程序一起分发。

wfauudbj

wfauudbj4#

您可以尝试直接在Azure上更改web.config,因此当您部署应用程序时,请转到web.config并将AspNetCoreModuleV2替换为AspNetCoreModule。直接更改web.config将重新启动应用程序轮询,只是为了了解问题所在。
请参阅同一文章,以及可能的解决方案:
AspNetCore 3.0 - HTTP错误500.0 - ANCM进程内处理程序加载失败

m1m5dgzv

m1m5dgzv5#

什么工作对我来说,花了很多时间后,我使用VS 2022.我希望它能帮助其他人。
在web.config中,我将“inprocess”更改为“OutOfProcess

<aspNetCore processPath="dotnet" arguments=".\myappdemo.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="OutOfProcess" />

相关问题