如何在Blazor 8中使用独立Aspire仪表板?配置遇阻求助
实现独立Aspire仪表板对接Blazor WebApp的步骤
首先明确核心点:单独使用Aspire仪表板需要先启动仪表板服务,再让Blazor应用把遥测数据发送过去——仅添加OtlpExporter不会自动创建仪表板。以下是可行的实现流程:
1. 安装必要NuGet包
在Blazor服务器端项目中执行以下命令安装依赖:
dotnet add package Aspire.Dashboard dotnet add package OpenTelemetry.Exporter.OpenTelemetryProtocol
2. 修正Program.cs配置
你当前的代码存在两个关键问题:追踪(Tracing)模块未配置Otlp导出,且端点指向了标准Otlp端口(4317)而非Aspire仪表板默认端口(18889)。修改后代码如下:
var builder = WebApplication.CreateBuilder(args); builder.Services.AddSingleton<CustomMeters>(); // 统一配置Aspire仪表板的Otlp端点 var aspireOtlpEndpoint = builder.Configuration.GetValue("Otlp:Endpoint", "http://localhost:18889"); builder.Services.AddOpenTelemetry() .WithMetrics(metrics => metrics .AddMeter("Microsoft.AspNetCore.Hosting") .AddMeter("Microsoft.AspNetCore.Server.Kestrel") .AddMeter("Microsoft.AspNetCore.Http.Connections") .AddMeter("System.NET.Http") .AddHttpClientInstrumentation() .AddAspNetCoreInstrumentation() .AddOtlpExporter(opt => opt.Endpoint = new Uri(aspireOtlpEndpoint))) .WithTracing(tracing => tracing .SetSampler(new AlwaysOnSampler()) .AddHttpClientInstrumentation() .AddAspNetCoreInstrumentation() .AddOtlpExporter(opt => opt.Endpoint = new Uri(aspireOtlpEndpoint))); // 补上追踪模块的Otlp导出 // 调整日志输出指向Aspire仪表板 builder.Logging.ClearProviders(); builder.Logging.AddOpenTelemetry(options => { options.AddConsoleExporter(); options.AddOtlpExporter(otlpOptions => otlpOptions.Endpoint = new Uri(aspireOtlpEndpoint)); }); builder.Services.AddRazorComponents() .AddInteractiveServerComponents() .AddInteractiveWebAssemblyComponents(); var app = builder.Build(); // ... 保留原有中间件配置
3. 启动独立Aspire仪表板
打开命令行执行以下命令启动仪表板服务:
dotnet aspire dashboard
默认情况下,仪表板会运行在http://localhost:18889,与我们代码中配置的端点一致。
4. 验证数据接收
启动你的Blazor WebApp,访问页面触发一些请求后,打开Aspire仪表板页面,就能看到日志、指标和追踪数据了。
常见排查点
- 确认Aspire仪表板和Blazor应用的Otlp端点完全一致,避免端口混淆(Aspire默认18889,标准Otlp是4317)。
- 检查NuGet包版本兼容性,确保OpenTelemetry相关包与Aspire包版本匹配。
- 如果无数据,查看Blazor应用控制台日志,排查是否有遥测发送失败的报错信息。
内容的提问来源于stack exchange,提问作者Paul Meems
相关产品推荐
相关产品推荐

