You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET React项目中HealthCheck调用抛出未处理异常求助

.NET+React项目中HealthChecks接口/api/monitoring抛出未处理异常问题

我在.NET+React项目里引入了Microsoft.AspNetCore.Diagnostics.HealthChecks组件,调用健康检查接口/api/monitoring时,出现错误:“执行请求时发生未处理的异常”。

我的健康检查配置代码如下:

app.UseHealthChecks("/api/monitoring", new HealthCheckOptions
{
    ResponseWriter = async (context, report) =>
    {
        context.Response.ContentType = "application/json";
        var response = HealthCheckUtils.CreateResponse(report);
        var jsonString = JsonSerializer.Serialize(response, new JsonSerializerOptions(JsonSerializerDefaults.Web));
        await context.Response.WriteAsync(jsonString);
    }
});

排查与解决方向

  • 先排除自定义响应逻辑的问题:注释掉自定义的ResponseWriter,使用默认配置测试接口是否正常:

    app.UseHealthChecks("/api/monitoring");
    

    如果默认配置能正常返回健康状态,说明问题出在HealthCheckUtils.CreateResponse方法或后续的JSON序列化步骤中。

  • 检查HealthCheckUtils.CreateResponse方法:这个自定义方法可能存在空引用、类型转换错误等问题。可以单独提取该方法的逻辑,传入模拟的HealthReport实例进行测试,确认是否抛出异常。

  • 排查JSON序列化异常:JsonSerializer.Serialize可能因为对象存在循环引用、不支持序列化的类型(比如未标记可序列化的自定义类)而抛出错误。可以单独测试序列化逻辑,验证CreateResponse返回的对象能否正常序列化为JSON字符串。

  • 查看详细异常堆栈:在开发环境中启用详细错误页面,获取具体的异常信息:

    if (app.Environment.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    

    异常堆栈会明确指出错误发生的代码行,是定位问题最直接的方式。

  • 确认健康检查服务已注册:确保在Program.cs中已经添加了健康检查服务的注册代码:

    builder.Services.AddHealthChecks();
    

    未注册服务会导致调用接口时抛出依赖注入相关的异常。

内容的提问来源于stack exchange,提问作者user21302417

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 15:12:49