将 ASP.NET Core 6 应用部署到现有的 Azure 应用服务?

Deploy ASP.NET Core 6 app to existing Azure App Service?

基于今天发布的 ASP.NET Core 6 release, it is my understanding that .NET 6 will be immediately available第 0 天支持)通过抢先体验在 Azure 应用服务上的公告:

We are happy to announce that App Service is rolling out day 0 support for .NET 6.0 applications across all public regions and scenarios on both Windows and Linux App Service plans.

在将我的 ASP.NET Core 应用程序升级到 ASP.NET Core 6、配置我的 Azure App Service 以使用 .NET 6 并将我的应用程序发布到我现有的 Azure App Service 之后,我得到了带有特定消息的 HTTP 错误 500.31:

The framework 'Microsoft.NETCore.App', version '6.0.0' (x64) was not found.

值得注意的是,它列出的唯一可用的 .NET 6 运行时是 RC2 (6.0.0-rc.2.21480.5),而不是今天的发布版本。

升级步骤

为此,我执行了以下步骤:

错误信息

访问我的 Azure 应用服务站点 时,我收到以下错误:

HTTP Error 500.31 - ANCM Failed to Find Native Dependencies

Common solutions to this issue:

The specified version of Microsoft.NetCore.App or Microsoft.AspNetCore.App was not found.

Specific error detected by ANCM:

It was not possible to find any compatible framework version 
The framework 'Microsoft.NETCore.App', version '6.0.0' (x64) was not found.

The following frameworks were found: 
2.2.14 at [D:\Program Files\dotnet\shared\Microsoft.NETCore.App] 
3.0.3 at [D:\Program Files\dotnet\shared\Microsoft.NETCore.App] 
3.1.15 at [D:\Program Files\dotnet\shared\Microsoft.NETCore.App] 
3.1.18 at [D:\Program Files\dotnet\shared\Microsoft.NETCore.App] 
5.0.7 at [D:\Program Files\dotnet\shared\Microsoft.NETCore.App] 
5.0.9 at [D:\Program Files\dotnet\shared\Microsoft.NETCore.App] 
6.0.0-rc.2.21480.5 at [D:\Program Files\dotnet\shared\Microsoft.NETCore.App] 

You can resolve the problem by installing the specified framework and/or SDK. 

The specified framework can be found at:
https://aka.ms/dotnet-core-applaunch?framework=Microsoft.NETCore.App&framework_version=6.0.0&arch=x64&rid=win10-x64

附加信息

混合消息

虽然 Azure App Service update cited above suggests that there will be "day 0 support", the ASP.NET Core 6 announcement 承诺较少:

At the time of this post, .NET 6 is being actively deployed to the worldwide network of servers and configured to build and run .NET 6 apps… which should conclude by the end of this week

我假设 GitHub 上的 Azure 更新将是最权威的来源,但也许 Azure 团队尚未确认推出的问题?

相关主题

我之前发布了两个与将 ASP.NET 核心 Web 应用程序的早期版本发布到 Azure App Services 相关的问题,并且遵循了与这些帖子相关的解决方案,但无济于事:

问题

如何使用抢先体验计划将 ASP.NET Core 6 应用的发布版本部署到 Azure 应用服务?这已经准备好了吗(根据 the Azure App Service announcement)? Or do we need to wait until the end of week (as per the ASP.NET Core 6 announcement)?

理想情况下,我想利用 Early Access,而不用将运行时与我的应用程序一起分发(作为独立分发)或通过扩展安装运行时。显然,这些仍然是选项,但抢先体验的前提是它们不是必需的。

我已使用独立部署模式成功部署到应用服务。 我所做的只是将 csproj 文件中的 TargetFramework 更改为 net6.0 并将 nuget 所有包更新为 6.0.0.

  1. 您应该将 .NET 版本更改为 .Net 6(Early Access)

  2. 并且您还需要在 scm 站点中安装扩展程序,url 就像 https://your_app_name.scm.azurewebsites.net。搜索 ASP.NET Core 6.0,然后安装它们。

  3. 然后重启webapp查看

好消息。这似乎是 the Azure App Service team's "day 0" announcement and actual availability. As of this post, the .NET 6 runtime is now available via Early Access in, at minimum, the South Central US region—and, presumably, others as well (unconfirmed). Worst case, based on the ASP.NET Core 6 announcement 之间的暂时滞后,这应该在本周末之前在全球范围内可用。

迁移步骤

重申原文post,要迁移您需要执行以下步骤:

  • 项目:从 ASP.NET 5 to ASP.NET 6 迁移您的应用;值得注意的是,在项目文件中(csproj):
    • 更新 <TargetFramework /> 以定位 net6.0
    • 更新所有 Microsoft.AspNetCore.* NuGet 包 到 6.0.0
  • 发布配置文件 (pubxml):更新 <TargetFramework /> 以定位 net6.0
  • Azure 应用服务配置:将 .NET 版本 更新为“.NET 6(早期访问)”

附加信息

您应该不需要执行以下任一操作:

  • 重新启动您的 Azure 应用服务
  • 使用 Self-contained 部署模式发布您的 Web 应用程序
  • 通过 Azure 应用服务扩展安装 .NET 运行时
  • 配置 AspNetCoreModule(V2)(正如 ASP.NET Core 3 所要求的那样)

解决方法

如果您所在的地区尚不提供抢先体验,并且您不想等到本周末,那么您可以使用两种解决方法,如本主题其他地方所建议的那样:

  • (根据 Jason Pan 的回答)
  • (根据 Eric Imhauser 的回答)

总而言之,Microsoft 至少可以声称它在“第一天”可用,并利用索引中的模糊性。

我 运行 在使用 Azure DevOps 部署时遇到了这个问题,并且完全感到困惑。所以我发布这篇文章是为了帮助遇到同样问题的任何人升级到 .NET 6 并使用 Azure DevOps 进行部署。

这实际上只是一个很小的改变。

在发布管道中,确保选择的 Runtime StackDOTNETCORE 6(见下图)