是否将ASP.NET Core 5应用程序部署到Azure应用服务? 为.NET 5配置现有应用服务为.NET 5配置新应用服务 Visual Studio发布警告限制替代品

问题描述

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

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

此问题的常用解决方案:

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

ANCM检测到特定错误

找不到任何兼容的框架版本找不到框架“ Microsoft.AspNetCore.App”(版本5.0.0)。 -找到以下框架:在[D:\ Program Files(x86)\ dotnet \ shared \ Microsoft.AspNetCore.App]的2.1.20在[D:\ Program Files(x86)\ dotnet \ shared \ Microsoft的2.1.22 .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在[D:\ Program Files(x86)\ dotnet \ shared \ Microsoft.AspNetCore.App]上使用3.1.8,可以通过安装指定的框架和/或SDK解决此问题。可以在以下位置找到指定的框架:-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尚不完全清楚,但是要利用新的App Service Early Access featureannouncement),您需要明确配置您的应用程序服务以使用.NET 5堆栈。

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

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

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

注意:从技术上讲,完成此操作后,您将安装.NET 5运行时,并可以切换回例如。 .NET Core运行时堆栈。但是,这样做会阻止您尽早获得对.NET的后续更新的访问权限,因此我不建议这样做。

为.NET 5配置应用服务

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

注意::如果您已经将另一个App Service配置为在同一App Service Plan上使用App Service Early Access,则.NET 5运行时将已经安装并可用。这是因为.NET运行时在同一App Service计划上的App Services之间共享。

Visual Studio发布警告

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

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

尽管如此,即使您使用的是与框架无关的部署模式,发布后所有内容也应能正常工作。

限制

警告:the App Services Early Access feature doesn't yet support Application Insights integration的当前实现。因此,如果您依赖于Azure的自动集成,而不是自定义工具,则可能要等到App Service Early Access功能支持Application Insights集成。

注意:我已经创建了an issue requesting status updates regarding Application Insights compatibility,但尚未收到回复。

替代品

作为替代方案,您可以选择使用发布配置文件({{1})中的自包含部署模式进行部署。这是.NET 5之前在Azure App Services上新发行.NET Core所需的方法,并且今天仍然受支持。