繁体   English   中英

由于 netcore 3.1.4 安全补丁,Azure 出现错误

[英]Error in Azure because of netcore 3.1.4 security patch

We build our web app with Azure DevOps pipelines and deploy into Azure with an Azure DevOps release. 我认为今天 netcore 在我们的构建代理上已更新为 netcore 3.1.4。 但是现在我们的 Azure DevOps 部署失败了,因为在 Azure 中我们的应用服务上尚未安装 netcore 3.1.4 运行时。

我们得到的错误信息:

    Could not find 'aspnetcorev2_inprocess.dll'. Exception message:
It was not possible to find any compatible framework version
The framework 'Microsoft.AspNetCore.App', version '3.1.4' was not found.
  - The following frameworks were found:
      2.2.8 at [D:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
      3.0.3 at [D:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
      3.1.1 at [D:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
      3.1.3 at [D:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]

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

这是有道理的并且可能发生,但是 go 解决此问题的最佳方法是什么?

我可以将我的构建修复为特定的 netcore 版本。 但我不喜欢这样,因为我们确实希望不断更新到较新的版本,但我们不想要 Azure 应用服务中没有的版本。

我认为我们必须自行安装服务是否正确,否则当 Azure DevOps 安装补丁比 Azure 更快时,我们可能会更频繁地遇到这个问题?

或者有没有办法强制将 Azure 应用服务更新到新的 netcore 3.1.4 安全补丁,我认为这是理想的?

我只需要一些指导来解决这个问题的最佳方法是什么?

If you want version of netcore to be automatically updated as an updated version is available, building our service as self-container seems like a good option: no need to have anything installed on the machine running (ie the version on Azure DevOps and Azure Web应用程序不必匹配)。

这种方法的主要缺点是构建的确定性降低:在同一个提交上运行两次构建可能会创建不同的二进制文件,具体取决于当前安装在构建代理上的内容。 如果您想了解更多信息, 这里有一篇有趣的文章,讨论了为什么确定性构建很重要。

为了保持构建的确定性,您可以在构建开始时使用Use.Net Core 任务(这将确保所需版本的 dotnet sdk 在代理上)。 您还可以在存储库中添加global.json以锁定您的开发盒和 Azure 开发操作中的构建。

这是一个常见的讨论话题,你可以找到很多主张某一方面的博客。

微软发布 LTS net core 3.1时引发了激烈的讨论,Azure 也开始支持 3.1 运行时需要一段时间。

您会发现很多博客强烈建议将您的 web 应用程序部署为独立的(运行时大小约为 100MB),并减少对 Microsoft 支持最新运行时的依赖。 而其他人则主张应用程序应尽可能保持轻量级,并且应在管道中设置运行时。 但这仍然取决于你。 在我对 net-core 3.1 的糟糕体验之后,我自己更喜欢部署独立的应用程序。

没有既定的最佳实践。

或者有没有办法强制将 Azure 应用服务更新到新的 netcore 3.1.4 安全补丁,我认为这是理想的?

AFAIK,没有这种方法可以强制将 Azure 应用服务更新到新的 netcore 3.1.4

我们可以跟踪https://aspnetcoreon.azurewebsites.net/上的最新版本,但目前无法更新。

要解决此问题,我们建议您将应用程序发布为自包含生成应用程序,其中包括 .NET 核心运行时和库,以及您的应用程序及其依赖项。 该应用程序的用户可以在没有安装 .NET Core 运行时的机器上运行它。

将您的应用程序发布为独立的会生成特定于平台的可执行文件。 output 发布文件夹包含应用程序的所有组件,包括 .NET 核心库和目标运行时。 该应用程序与其他 .NET 核心应用程序隔离,并且不使用本地安装的共享运行时。 您的应用程序用户无需下载和安装 .NET Core。

您可以查看此文档.NET 核心应用程序发布概述以了解更多详细信息。

希望这可以帮助。

过去,我遇到过同样的情况,您可以通过手动设置 RunTime Stack 下拉列表中的值来解决此问题。 如果您手动更新构建 processes.yml 文件

 RuntimeStack: 'DOTNETCORE|3.1' 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM