将面向新版本.NET的ASP.NET核心应用部署到现有Azure应用服务?

sc4hvdpw  于 2022-11-17  发布在  .NET
关注(0)|答案(1)|浏览(132)

我有一个在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。
使用detailed errors enabled,我获得了以下附加信息:

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.NETCore5将立即在Azure应用服务上可用。我是否遗漏了一个步骤?我如何将ASP.NETCore5 Web应用程序发布到Azure应用服务?或者我是否仍需要等到.NET 5运行时在Azure上可用?

  • 注意 *:此问题最初是针对ASP.NET Core 5提出的。但是,此问题及其answer仍然与ASP.NET Core 6和ASP.NET Core 7相关。
mzmfm0qo

mzmfm0qo1#

参考的发行说明中并不完全清楚这一点,但为了利用新的App Service Early Access featureannouncement),您需要 * 显式 * 配置您的App Service以使用.NET 5堆栈。

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

要通过Azure门户为现有应用服务执行此操作,请完成以下步骤:
1.转到要升级的应用程序服务
1.单击左侧导航栏上的“Configuration”(配置)
1.单击页面级导航中的“常规设置”
1.在 * 堆栈设置 * 下,选择.NET
1.在 * 框架版本 * 下,选择.NET 5

  • 注意:* 从技术上讲,一旦你这样做,你就安装了.NET 5运行时,并且可以切换回例如.NET核心运行时堆栈。但是,这样做会阻止你提前访问.NET的后续更新,所以我不推荐这样做。
  • 注意:* 对于ASP.NET Core 6,此选项现在标记为“.NET 6(LTS).”对于ASP.NET Core 7,此选项现在标记为“.NET 7(STS)."

为.NET 5配置 * 新 * 应用程序服务

在通过Azure门户配置新应用服务时,此应用服务早期访问的选择性加入要明确得多。在这种情况下,在创建应用服务时,系统将提示您选择 * 运行时堆栈 *,在该堆栈下,.NET 5被显式标记为 .NET 5(早期访问)

  • 注意:* 如果您已将另一个应用服务配置为在同一应用服务计划上使用应用服务早期访问,则.NET 5运行时将已安装并可用。这是因为.NET运行时在同一应用服务计划上的应用服务之间共享。
  • 注意:* 对于ASP.NET Core 6,此选项现在标记为“.NET 6(LTS).”对于ASP.NET Core 7,此选项现在标记为“.NET 7(STS)."

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节中所述。
尽管如此,一旦发布,即使您使用的是 Framework-dependent 部署模式,一切都应该正常工作。

应用洞察

提醒你一句:App Services Early Access功能的当前实现 * 还 * 不支持Application Insights集成。我早在2020年11月就创建了一个issue requesting status updates regarding Application Insights compatibility,但我不指望很快会有解决方案:a follow-up thread已关闭,但未解决。
如果您仍然依赖于Azure集成的Application Insights,我建议您使用migrate to the SDK implementation

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

备选方案

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

相关问题