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

.NET MAUI中TelemetryClient离线数据丢失:Bug还是设计如此?

.NET MAUI中TelemetryClient离线数据丢失问题分析

测试发现.NET MAUI里的TelemetryClient在离线时的数据留存表现不一致:短时间离线后恢复连接,离线期间产生的数据能成功同步到Azure Insights;但离线10-15分钟后,这部分数据会丢失,推测是客户端离线时自动触发Flush操作导致的。

TelemetryClient默认使用InMemoryChannel。

测试过程

  • 启动Android模拟器,通过adb shell命令关闭设备网络
  • 在.NET MAUI应用内操作,生成pageViews和customEvents类型的遥测数据
  • 恢复网络后等待数分钟(未手动执行Flush),用Kusto查询Azure Insights数据:
pageViews
| where timestamp >= ago(45m)

customEvents
| where timestamp >= ago(45m)

测试结果

  • 离线时长仅数秒时,恢复网络后能在Azure Insights中看到离线期间的点击事件和页面浏览数据
  • 离线10-15分钟时,离线期间的数据完全丢失
  • 恢复网络后新产生的点击事件可正常同步至Azure Insights

推测原因

TelemetryClient默认每30秒触发一次Flush,或内存中消息达到500条时触发Flush。离线状态下触发Flush时,数据无法发送到Azure Insights,进而导致数据丢失。

目前不确定这种「偶发数据丢失」是Bug还是设计预期,但从逻辑上看更倾向于是Bug——既然TelemetryClient是在内存中存储数据,为何无法Flush时要删除数据,而不是保留到联网后再发送?这一逻辑存在矛盾。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 01:02:10