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

Jer*_*ney 18 azure azure-web-app-service asp.net-core .net-5 asp.net-core-5.0

我有一个在 ASP.NET Core 3.x 上运行的现有 Azure 应用服务。我已将应用程序升级到今天发布的ASP.NET Core 5。这在我的本地 IIS Express 服务器上运行良好。但是,当我使用 Visual Studio 2019 将应用程序发布到应用服务时,收到以下错误:

HTTP 错误 500.31 - ANCM 无法找到本机依赖项

此问题的常见解决方案:

未找到指定版本的 Microsoft.NetCore.App 或 Microsoft.AspNetCore.App。

随着启用了详细的错误,我得到了以下信息:

It was not possible to find any compatible framework version 
The framework 'Microsoft.AspNetCore.App', version '5.0.0' was not found.

The following frameworks were found: 
2.1.20 at [D:\Program Files (x86)\dotnet\shared\Microsoft.AspNetCore.App] 
2.1.22 at [D:\Program Files (x86)\dotnet\shared\Microsoft.AspNetCore.App] 
2.2.11 at [D:\Program Files (x86)\dotnet\shared\Microsoft.AspNetCore.App] 
2.2.14 at [D:\Program Files (x86)\dotnet\shared\Microsoft.AspNetCore.App] 
3.0.3 at [D:\Program Files (x86)\dotnet\shared\Microsoft.AspNetCore.App] 
3.1.6 at [D:\Program Files (x86)\dotnet\shared\Microsoft.AspNetCore.App] 
3.1.8 at [D:\Program Files (x86)\dotnet\shared\Microsoft.AspNetCore.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.AspNetCore.App&framework_version=5.0.0&arch=x86&rid=win10-x86
Run Code Online (Sandbox Code Playgroud)

我知道ASP.NET Core 5 将立即在 Azure App Services 上可用。我错过了一步吗?如何将 ASP.NET Core 5 Web 应用程序发布到 Azure 应用服务?还是我还需要等到 .NET 5 运行时在 Azure 上可用?

Jer*_*ney 26

从引用的发行说明中并不完全清楚,但为了利用新的应用服务抢先体验功能公告),您需要显式配置应用服务以使用 .NET 5 堆栈。

为 .NET 5配置现有应用服务

若要通过现有应用服务的 Azure 门户执行此操作,请完成以下步骤:

  1. 转到要升级的应用服务
  2. 点击Configuration左侧导航
  3. 点击General Settings页面级导航
  4. 堆栈设置下,选择.NET
  5. 框架版本下,选择.NET 5

注意:从技术上讲,执行此操作后,您将安装 .NET 5 运行时,并且可以切换回例如 .NET Core 运行时堆栈。但是,这样做会阻止您提前访问 .NET 的后续更新,因此我不推荐这样做。

为 .NET 5配置新的应用服务

通过 Azure 门户配置新的应用服务时,这种应用服务早期访问的选择更加明确。在这种情况下,在创建应用服务时,系统会提示您选择运行时堆栈,在该堆栈下 .NET 5 被明确标记为.NET 5 (Early Access)

注意:如果您已将另一个应用服务配置为在同一应用服务计划上使用应用服务抢先体验,则 .NET 5 运行时将已安装并可用。这是因为 .NET 运行时在同一应用服务计划上的应用服务之间共享。

Visual Studio 发布警告

即使使用抢先体验功能,假设您启用了版本兼容性检查,在从 Visual Studio 2019 16.8 发布时仍可能收到以下警告:

您的应用程序需要 .NET Core 5.0.0 运行时,但 Microsoft Azure 应用服务仅支持以下版本:2.1.20、2.1.22、2.2.11、2.2.14、3.0.3、3.1.6 和 3.1。 8.

尽管如此,一旦您发布一切都应该可以工作,即使您使用的是依赖框架的部署模式。

应用洞察

警告:应用服务早期访问功能的当前实现尚不支持 Application Insights 集成。早在 2020 年 11 月,我创建了一个问题,要求更新有关 Application Insights 兼容性的状态,但我预计不会很快得到解决:一个后续线程在没有解决的情况下关闭。

如果您仍然依赖 Application Insights 的 Azure 集成,我建议您迁移到 SDK 实现

注意:在 ASP.NET Core 中配置 Application Insights SDK 比在早期版本的 .NET Framework 中配置要简单得多,并且需要的样板代码要少得多。

备择方案

作为替代方案,您可以选择使用发布配置文件 ( ) 中的自包含部署模式进行部署*.pubxml。这是 .NET 5 之前 Azure 应用服务上的 .NET Core 新版本所需的方法,并且今天继续得到支持。

  • 如果有帮助的话,对于现有的应用程序服务,我对 .NET / .NET 5 进行了更改,但随后必须重新部署我的最新管道版本 (3认同)