Aspire Dashboard 启动后打不开页面怎么办
默认启动
dotnet aspire dashboard后,浏览器访问
http://localhost:18080却显示连接被拒绝或空白页,大概率是后台服务没起来或端口被占。先确认 Aspire host 进程是否在运行:
dotnet --list-processes或任务管理器查
Microsoft.Extensions.Hosting相关进程。
常见原因和应对方式:
项目未启用 Aspire 托管模型:确保启动项目是AspireApp.Host(或含
AddAspireDashboard()的宿主),不是直接跑 Web API 项目 端口冲突:用
netstat -ano | findstr :18080查占用进程,或改用
dotnet aspire dashboard --port 18081Dashboard 依赖的 Redis / PostgreSQL 容器未就绪:检查终端输出是否有
Waiting for container 'redis' to be ready...类提示,等待几秒再刷新 首次启动需拉取镜像:Docker Desktop 必须运行且有网络,
docker ps应能看到
aspire-dashboard-db等容器
为什么资源列表里看不到我的服务
Aspire Dashboard 不会自动发现所有项目,只监控通过
AddProject<t>()</t>或
AddExecutable(...)显式注册到
AspireAppHost的组件。如果你的服务是独立部署的(比如手动
dotnet run),它不会出现在仪表板中。
正确做法是在
Program.cs的宿主构建阶段注册:
var builder = DistributedApplication.CreateBuilder(args);
builder.AddProject<Projects.MyApi>("myapi"); // ← 必须这样注册
builder.AddProject<Projects.WebFrontend>("frontend");
builder.Build().Run();注意点:
项目名(如"myapi")会作为服务标识显示在 Dashboard 左侧资源列表,不能重复 若服务启动慢(如 EF Core 迁移耗时),Dashboard 可能短暂显示 “Not Ready”,等其健康检查通过(HTTP 200 或
/healthendpoint)才会变绿 确保服务暴露了可被 Dashboard 探测的 endpoint:默认要求
http://localhost:50xx/health返回 200,否则需在注册时指定健康检查路径:
.WithHealthCheck("/api/health")
如何查看服务的实时日志和依赖拓扑
Dashboard 页面左上角切换到 Logs 标签页,选中某服务后,日志流会自动按时间倒序加载。它不是简单转发
Console.WriteLine,而是依赖
Microsoft.Extensions.Logging的结构化日志管道 —— 所以你的服务必须使用
ILogger<t></t>记录,且宿主已启用日志聚合(默认开启)。
拓扑图(Topology 标签页)展示服务间调用关系,但前提是调用走的是 Aspire 内置的可观测性链路:
HTTP 调用需用HttpClient实例(由
builder.AddProject().WithReference(...)注入),而非硬编码 URL gRPC 调用需用
AddGrpcServiceReference注册,Dashboard 才能解析服务发现地址并绘制箭头 数据库连接不会自动出现在拓扑中 —— 即使你用了
AddRedis或
AddPostgres,它们只显示为独立资源节点,不体现“谁连了它”
Dashboard 报错 “Failed to load metrics: 404” 怎么办
这个错误说明服务没暴露 Prometheus metrics endpoint,或者路径不对。Aspire 默认期望服务在
/metrics提供 OpenMetrics 格式数据(如
http://localhost:5091/metrics)。
修复步骤:
在服务项目中安装Prometheus.AspNetCore包 在
Program.cs添加:
builder.Services.AddEndpointsApiExplorer(); builder.Services.AddPrometheusHttpMetrics(); app.MapPrometheusScrapingEndpoint();确保服务启动后,手动 curl
curl http://localhost:5091/metrics能返回文本指标(含
# TYPE process_cpu_seconds_total counter等) Dashboard 默认每 15 秒拉一次指标;如果服务刚启动,可能要等一两个周期才显示图表
注意:指标采集依赖服务的
ASPNETCORE_ENVIRONMENT是
Development或明确启用了
app.UsePrometheusHttpMetrics()中间件 —— 生产环境常会关闭此 endpoint。
