gpt4 book ai didi

c# - 配置 NET 6 Azure Function 应用程序运行状况检查

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

我正在努力寻找有关如何在 Azure 中为 .NET 6 Core 函数应用设置运行状况检查的任何最新文档。

应用程序在应用程序服务计划(而非消耗)内以 DOTNET-ISOLATED 运行。

这个documentation解释如何在 Azure 中设置运行状况检查部分(足够简单)。

但它没有从代码角度解释任何地方需要在函数应用程序端运行什么。有各种各样的health check可用的东西,但它似乎都是面向 WebApi,或者没有 .NET 6 的示例。

对于 WebApi 来说这很容易做到(只需几句话),但对于他们自己的函数应用程序却不是这样,这似乎很愚蠢?

This looks simple ,但似乎只适用于消费计划?

我看过一些文章和答案,包括 this one ,针对 .NET 5,但它缺乏细节并且看起来不像是对 .NET 6 的明显翻译?

有人有一些工作代码的示例吗?健康检查需要多深入?我可以编写一个返回 200 并将 Azure 指向它的简单函数吗?

最佳答案

经过相当多的摸索之后,我最终想出了这个,这似乎可以完成工作。

首先,安装nuget包:

Microsoft.Extensions.Diagnostics.HealthChecks
版本6.0.15

将其添加到您的启动/HostBuilder

services.AddHealthChecks();

然后添加一个类似这样的函数:

using Microsoft.AspNetCore.Routing;
using Microsoft.Azure.Functions.Worker.Http;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Diagnostics.HealthChecks;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Grpc.Core;

namespace MyFunctionAppNameSpace
{
public class HealthCheck
{
private readonly HealthCheckService _healthCheck;

public HealthCheck(HealthCheckService healthCheck)
{
_healthCheck = healthCheck;
}

[Function(nameof(HealthCheck))]
public async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = "health")] HttpRequestData req,
FunctionContext context)
{
var healthStatus = await _healthCheck.CheckHealthAsync();
return new OkObjectResult(Enum.GetName(typeof(HealthStatus), healthStatus.Status));
}
}
}

最后,在 Azure 中设置运行状况检查(部署代码后,如果使用插槽,请多次设置):

Azure Health Check Setup

希望这可以帮其他人省去麻烦......

关于c# - 配置 NET 6 Azure Function 应用程序运行状况检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75919014/

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