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

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

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

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.

使用 ,我得到以下附加信息:

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

我已经理解 ASP.NET Core 5 would be immediately available on Azure App Services。我错过了一步吗?如何将 ASP.NET Core 5 Web 应用程序发布到 Azure 应用服务?还是我仍然需要等到 .NET 5 运行时在 Azure 上可用?

the release notes referenced, but in order to take advantage of the new App Service Early Access feature (announcement 中还不完全清楚),您需要明确地 配置您的应用服务以使用 .NET 5 堆栈。

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

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

  1. 转到您要升级的应用服务
  2. 点击左侧导航配置
  3. 点击页面级导航中的常规设置
  4. 堆栈设置下、select .NET
  5. 框架版本下,select .NET 5

Note: Technically, once you do this, you'll have the .NET 5 runtime installed and could switch back to e.g. the .NET Core runtime stack. Doing so, however, would prevent you from gaining early access to subsequent updates to .NET, so I wouldn't recommend it.

为 .NET 5 配置 应用服务

在通过 Azure 门户配置新的应用服务时,选择加入应用服务抢先体验要明确得多。在这种情况下,在创建应用服务时,系统会提示您 select 运行时堆栈 ,其中 .NET 5 明确标记为 。 NET 5(抢先体验).

Note: If you already have another App Service configured to use App Service Early Access on the same App Service Plan, then the .NET 5 runtime will already be installed and available. This is because .NET runtimes are shared between App Services on the same App Service Plan.

Visual Studio 发布警告

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

Your application requires the .NET Core 5.0.0 runtime, but Microsoft Azure App Service only supports the following versions: 2.1.20, 2.1.22, 2.2.11, 2.2.14, 3.0.3, 3.1.6, and 3.1.8.

尽管如此,一旦您发布一切都应该工作,即使您使用的是 Framework-dependent 部署模式。

应用洞察

作为警告:the App Services Early Access feature doesn't yet support Application Insights integration. I created an issue requesting status updates regarding Application Insights compatibility back in November 2020, but I'm not expecting a resolution anytime soon: a follow-up thread 的当前实施在没有解决的情况下关闭。

如果您仍然依赖 Application Insights 的 Azure 集成,我建议您 migrate to the SDK implementation

Note: Configuring the Application Insights SDK in ASP.NET Core is dramatically simpler than it was in earlier versions of .NET Framework, and requires far less boilerplate code.

备选方案

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