如何为Azure HealthCheck函数的IActionResult结果添加JsonObject
修改Azure HealthCheck函数返回包含详细检查信息的JSON结果
直接调整原函数的返回逻辑,把你定义的JsonObject和整体健康状态整合到返回结果里,同时修正原代码里的变量名错误(原代码误用了未定义的healthResult,实际应为result),完整修改后的代码如下:
[FunctionName("HealthCheck")] public async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = "health")] HttpRequestMessage req, ILogger log) { var result = await _healthCheck.CheckHealthAsync(); // 构建包含整体状态与检查项详情的JSON对象 var json = new JsonObject { ["status"] = Enum.GetName(typeof(HealthStatus), result.Status), ["checks"] = new JsonArray(result.Entries.Select(x => new JsonObject { ["name"] = x.Key, ["status"] = x.Value.Status.ToString(), ["description"] = x.Value.Description ?? string.Empty }).ToArray()) }; // 根据健康状态返回对应HTTP状态码与完整JSON数据 if (result.Status == HealthStatus.Healthy) { return new OkObjectResult(json); } return new ObjectResult(json) { StatusCode = StatusCodes.Status503ServiceUnavailable }; }
关键调整说明:
- 统一返回结构:在你定义的
checks数组基础上,新增了整体健康状态字段status,让返回结果同时包含全局状态和各检查项的明细,格式更规范。 - 修复变量错误:将原代码中错误的
healthResult替换为实际声明的result变量,解决编译报错问题。 - 保持格式一致:无论服务健康与否,都返回结构相同的JSON数据,仅通过HTTP状态码(200/503)区分健康状态,方便客户端统一解析。
内容的提问来源于stack exchange,提问作者renathy
相关产品推荐
相关产品推荐

