如何修复 Azure .net8 隔离工作模型函数的工作运行时元数据?

问题描述 投票:0回答:1

我已将 .net6 Azure 函数(使用应用服务计划,而不是消耗)升级为独立的 .net8 函数。我所有的组件都有

<TargetFramework>net8.0</TargetFramework>

功能项目也有

<AzureFunctionsVersion>v4</AzureFunctionsVersion>
<OutputType>Exe</OutputType>

还有

  <ItemGroup>
        <Using Include="System.Threading.ExecutionContext" Alias="ExecutionContext" />
  </ItemGroup>

(我不知道它在做什么,但它在 Microsoft 升级文章中给出)。

部署时,管道设置以下值:

"FUNCTIONS_EXTENSION_VERSION": "~4",
"FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
"WEBSITE_USE_PLACEHOLDER_DOTNETISOLATED": 1,
"WEBSITE_RUN_FROM_PACKAGE": 1,

我的功能看起来很好,计划的功能被触发,并且服务总线消息通过。

尽管如此,Azure 仍显示警告:

The 'FUNCTIONS_WORKER_RUNTIME' is set to 'dotnet-isolated', which does not match the worker runtime metadata found in the deployed function app artifacts. The deployed artifacts are for 'dotnet'. See https://aka.ms/functions-invalid-worker-runtime for more information. The application will continue to run but may throw an exception in the future.

这两天我多次重新部署并重启该功能,但该消息并没有消失。

我开始寻找神秘的“工作运行时元数据”,但找不到任何有用的信息。然后我查看了管道构建的工件 zip 的内部,并在其中搜索了“dotnet”文本。唯一提到它的文本文件是worker.config.json,其中包含:

{
  "description": {
    "language": "dotnet-isolated",
    "extensions": [ ".dll" ],
    "defaultExecutablePath": "dotnet",
    "defaultWorkerPath": "MyNamespace.Function.dll",
    "workerIndexing": "true",
    "canUsePlaceholder": true
  }
}

和functions.metadata,其中所有函数都有

"language": "dotnet-isolated"
。因此,如果没有“隔离”,就不会提到“dotnet”。

Azure 中的功能设置在部署后看起来不错:运行时版本 ~4,.NET 版本是 .NET 8 隔离。

当我在 Azure 中查看各个函数本身并尝试编辑它们时,我收到此警告:

Editing .NET isolated Function Apps is not supported in the Azure portal. Use your local development environment to edit this Function App.

这表明使用“dotnet-isolated”语言的函数是正确的。

我在这里缺少什么? Azure 警告的这个神秘的“工作线程运行时元数据”在哪里?

c# azure azure-functions .net-8.0 azure-functions-isolated
1个回答
0
投票

我认为你根本没有错过任何东西。该警告表明,已部署的版本是进程内函数,与您正在部署的版本不同。这是迁移现有功能后所期望的。

您可以在门户中查看使用的语言。并将其更新为 dotnet-isolated。据我所知,这应该可以解决该警告。

Azure Portal Screenshot showing the language selection

如果您使用 ARM 模板,请确保将properties.siteConfig.netFrameworkVersion 设置为“v8.0”

如果您访问 https://resources.azure.com/,您应该能够看到应用服务的元数据,或者如果您在门户上应用设置后查看审核日志(从上面) 。但这些是通过第一次部署或更新语言来间接设置的

© www.soinside.com 2019 - 2024. All rights reserved.