C# AspNetCoreModuleV2发布.NET核心3.0

C# AspNetCoreModuleV2发布.NET核心3.0,c#,asp.net-mvc,azure,asp.net-core,asp.net-core-3.0,C#,Asp.net Mvc,Azure,Asp.net Core,Asp.net Core 3.0,希望有人能帮助解决这个问题: 我已经在Azure上部署了我的.NET Core 3.0应用程序,尽管它显示“发布成功”。应用程序未加载(http 500,服务器错误)。 Azure中的“诊断和解决问题”选项卡指向模块“AspNetCoreModuleV2”,如图所示 我试过: 按照此处的建议安装.NET3.0运行时托管捆绑包 将web.config文件上的modules=“AspNetCoreModuleV2”更改为modules=“AspNetCoreModule”,但一旦发布应用程序,该

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

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

我试过:

  • 按照此处的建议安装.NET3.0运行时托管捆绑包

  • 将web.config文件上的
    modules=“AspNetCoreModuleV2”
    更改为
    modules=“AspNetCoreModule”
    ,但一旦发布应用程序,该文件将恢复为其原始值

  • InProcess
    添加到
    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>
顺便说一下,应用程序在本地计算机上运行时没有任何问题


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

请检查
PublishProfiles
文件夹(位于
属性
内)下的内容,并确保:

<SelfContained>true</SelfContained>
true
自包含的应用程序将运行时与应用程序一起分发


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

请参阅同一篇文章,以及可能的解决方案:

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

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

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

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

编辑您的csproj

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

在Azure WebApp中,
HTTP错误500.31-ANCM未能找到本机依赖项
错误可能是由于
InProcess
托管模型和模块
AspNetCoreModuleV2

造成的。我想做一些类似的事情,但是,我不确定在Azure中直接在哪里找到web.config?我认为这不容易更改,否则,您是否尝试将应用程序部署为自包含式?我试图避免将其部署为自包含式,因为这似乎不是最佳选择(根据Microsoft网站上的文档),但我认为我必须尝试……在我的密钥库上配置防火墙,以仅允许从“选定网络”进行访问,这在我的.NET代码3.0应用程序上触发了错误“500.30进程中启动失败”。将密钥Vault FW切换回所有网络修复了该问题。
<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
    <AspNetCoreModuleName>AspNetCoreModuleV2</AspNetCoreModuleName>
..
<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>