.NET 10 - Blazor web assembly应用的一些诊断方式

1. 简单介绍

.NET Conf 2025(2025/11/11-2025/11/14)已经结束了,微软发布了.NET10Visual Studio 2026

.NET 10 是Long term support版本, 微软将支持到2028年。

AI 依然是这次大会非常重要的主题,不过感觉没有2024年的.NET Conf来的那么浓重。基于之前的Semantic Kernel和Autogen,微软推出了Microsoft Agent Framework。大会中很多的演示系统是基于.NET Aspre制作的。

Blazor是作为一个独立的session进行讲解,大会中微软老师将Blazor的更新分成了4个方面

  1. Security

  2. Observability & diagnostics

  3. Performance improvements

  4. Delight developers

其中Observability & diagnostics方面的更新有New metrics, Improved tracing, Blazor WebAssembly diagnostic tools。

这边简单体验一下Blazor WebAssembly diagnostic tools的使用

2.具体说明

假定已经安装了Visual Studio 2026和.NET Sdk 10.0,并创建了一个Blazor web assembly项目,

2.1 安装wasm-tools

如果要使用Blazor Web Assembly diagnostic tool,则需要先安装一下 wasm-tools,命令如下

复制代码
dotnet workload install wasm-tools

2.2 配置项目

在Client项目文件中(.csproj)添加如下配置,

复制代码
<PropertyGroup>
  <EnableDiagnostics>true</EnableDiagnostics>
</PropertyGroup>

note, 这个配置适用于开发阶段,生成环境不应该做这个配置的。

2.3 Dump Memory

  1. 启动项目,导航到有问题的页面或者组件,通过调用Javascript Api collectGcDump来执行一下memory dump操作,如下图所示,

    globalThis.getDotnetRuntime(0).collectGcDump();

  1. 命令会生成一个.nettrace后缀的文件,

3)执行如下命令对.nettrace后缀文件进行转换,

复制代码
dotnet gcdump convert trace.1763561149130.nettrace

转换后的文件如下图所示,

4).gcdump后缀的文件可以使用Visual Studio 2026直接打开并进行问题的diagnositc了,

note, 以上的memory dump方法适用于检查内容泄露问题。

2.4 检查方法的效率

从CPU的角度可以查看各个方法执行的快慢,可以使用Javascript Api collectCpuSamples

  1. 配置项目,

2)启动项目,导航到有问题的页面或者组件,执行如下命令获取60秒内CPU的执行数据

复制代码
globalThis.getDotnetRuntime(0).collectCpuSamples({durationSeconds: 60});
  1. 使用Visual Studio 2026或者PrefView打开.nettrace文件进行检查分析。

2.5 其他

还可以通过如下的Javascript 命令collectMetrics获取Blazor app的metric数据,

复制代码
globalThis.getDotnetRuntime(0).collectMetrics({durationSeconds: 5});

对应的csproj文件中需要添加如下的配置,

3.总结

本文简单介绍了一下.NET 10中Blazor Web Assembly应用程序问题诊断和排查的一些方式,通过collectGcDump,collectCpuSamples,collectMetrics可以获取nettrace执行数据以便进行问题分析。.NET 10 中Blazor的更新有很多,还需要继续跟着微软的老师学习一下。

本文如果哪里有错误,麻烦告之,谢谢谢谢!

相关推荐
Water_Sunzhipeng2 小时前
HandyControl Demo 设置特定框架记录
c#
czhc11400756632 小时前
插补、另存为、标记过滤、采集超时——今天聊的四件事
c#
小羊没烦恼!3 小时前
Memory 记忆设计讨论:Agent Memory 的数据模型可以怎么设计
java·开发语言·前端·c++·c#
m0_466525294 小时前
从火柴人看护画面看云从科技生态企业的隐私保护实践
大数据·人工智能·科技·microsoft
大模型码小白4 小时前
告别造假数据,直接连数据库查真实时序数据喂给 TimechoAI 大模型
java·数据库·人工智能·microsoft·架构
小羊没烦恼!7 小时前
Memory 记忆设计讨论:为什么 Agent Memory 不能只靠向量数据库?
java·开发语言·windows·算法·c#
...6227 小时前
C# 中 Lambda 表达式的全面讲解
c#
...6229 小时前
WinForm中Socket通信服务端客户端代码实现讲解
tcp/ip·c#·socket
小羊没烦恼!9 小时前
Memory 记忆设计讨论:Agent Memory 的安全边界:权限、删除、版本与回执
java·大数据·word·powerpoint·.net
海盗123410 小时前
微软技术日报 2026-09-14:Rust 升为微软一级语言,云业务重组为智能体与基础设施
开发语言·microsoft·rust