.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
相关产品推荐
相关产品推荐

