gpt4 book ai didi

azure - 将 AF 应用程序迁移到 .NET 7 隔离进程;现在应用程序预热时会出现几分钟 502 错误

转载 作者:行者123 更新时间:2023-12-02 23:54:19 25 4
gpt4 key购买 nike

我在 Azure 应用服务消费计划中的 .NET 6 上有一个应用程序,一切都运行良好,直到我将其迁移到需要隔离托管的 .NET 7。我在同一订阅下在 Azure 中创建了一个全新的 AF;然而,除了 .NET 版本设置为“隔离”之外,其他一切都相同,包括代码。

enter image description here

问题是:在新创建的 AF 中运行函数的前几分钟,我开始收到 502 错误(“错误网关”)。当它被唤醒时,它工作得很好,直到我让它再次闲置几个小时。请注意,消费计划中没有“始终开启”选项。

我的问题是,这是否是该计划的预期行为(尽管我没有在 .NET 6 的消费计划中经历过这种情况),并且我应该投资“始终开启”的高级计划,或者如果它不应该这样做发生这种情况,我需要在设置中进行一些调整或向 Microsoft 开具票证吗?

最佳答案

检查以下步骤,将 Azure Function 6 迁移到 Azure Function 7 隔离进程。

  • 创建了 Azure 函数.NET 6 enter image description here

.NET6 输出

enter image description here

  • 从 Azure Function .NET 6 迁移到 .NET 7isolated

  • 迁移时必须在现有文件中完成大量更改。

  • Visual Studio => .csproj 文件中,将 TargetFrameworknet6.0 更改到 net7.0

  • .csproj中,删除NuGet包Microsoft.NET.Sdk.Functions。此包旨在与in-proc函数应用程序一起使用,而不是在独立函数应用程序中使用。

  • 添加以下 Nuget 包。

<PackageReference Include="Microsoft.Azure.Functions.Worker" Version="1.8.0" />
<PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Http" Version="3.0.13" />
<PackageReference Include="Microsoft.Azure.Functions.Worker.Sdk" Version="1.7.0" />
  • Function1.cs 文件中,更新新的 using 语句并更改类名称。

.csproj 文件

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<AzureFunctionsVersion>v4</AzureFunctionsVersion>
<OutputType>Exe</OutputType>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.Azure.Functions.Worker" Version="1.8.0" />
<PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Http" Version="3.0.13" />
<PackageReference Include="Microsoft.Azure.Functions.Worker.Sdk" Version="1.7.0" />
</ItemGroup>
<ItemGroup>
<None Update="host.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="local.settings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>Never</CopyToPublishDirectory>
</None>
</ItemGroup>
<ItemGroup>
<Using Include="System.Threading.ExecutionContext" Alias="ExecutionContext" />
</ItemGroup>
</Project>

我的示例 Function1.cs

using System.Net;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Http;
using Microsoft.Extensions.Logging;

添加新文件Program.cs

using Microsoft.Extensions.Hosting;
var host = new HostBuilder()
.ConfigureFunctionsWorkerDefaults()
.Build();
host.Run();

  • 保存并发布包含新更改的版本。

  • 我可以使用 .NET 7 访问新的 Function App,没有任何问题。

  • local.settings.json 文件中,将 FUNCTIONS_WORKER_RUNTIMEdotnet 更改为 dotnet-isolated >.

  • 您可以在已部署的应用程序中看到更改。

enter image description here

  • 我们可以在Azure Portal => 配置 => 应用程序设置中更改配置。

enter image description here

  • 但我看到了很多变化,我们需要添加新的 NuGet 包,我建议您在 VS 中迁移,再次重新部署应用。

.NET 7 隔离输出:

复制 URL 并执行函数。

enter image description here enter image description here

关于azure - 将 AF 应用程序迁移到 .NET 7 隔离进程;现在应用程序预热时会出现几分钟 502 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74395382/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com