用途
本技能用于为 .NET 项目完整接入 Sentry SDK,覆盖错误监控、分布式追踪、性能分析(Profiling)、结构化日志以及 Cron 定时任务监控。它会在给出建议前先扫描项目,识别所用框架与现有依赖,再据此提供具体的包选择、初始化代码与配置方案。
主要能力
- 项目检测:通过查找 .csproj、TargetFramework、已有 Sentry 包引用、启动文件(Program.cs、App.xaml.cs、MauiProgram.cs)、appsettings.json、日志库(Serilog/NLog/log4net)等,判断框架类型与集成方式。
- 框架到包映射:根据检测结果推荐对应 NuGet 包,例如 ASP.NET Core 用 Sentry.AspNetCore,WPF/WinForms 用 Sentry,MAUI 用 Sentry.Maui,Blazor WebAssembly 用 Sentry.AspNetCore.Blazor.WebAssembly,Azure Functions 用 Sentry.Extensions.Logging + Sentry.OpenTelemetry,经典 ASP.NET 用 Sentry.AspNet。
- 初始化指导:提供各框架的初始化代码示例,并指出关键差异,例如桌面应用必须设置 IsGlobalModeEnabled = true,WPF 应在构造函数而非 OnStartup() 中初始化,无服务器场景需设置 FlushOnCompletedRequest = true。
- 配置方式:支持代码内配置、appsettings.json 配置以及环境变量配置(双下划线分隔)。
- 调试符号上传:指导创建 Sentry 认证令牌、配置 MSBuild 属性(SentryUploadSymbols、SentryUploadSources、SentryCreateRelease、SentrySetCommits 等)并在 CI 中设置 SENTRY_AUTH_TOKEN,以获得可读的堆栈跟踪。
- 验证流程:通过临时抛出测试异常并在 Sentry Issues 面板确认,检查异常捕获、堆栈可读性、追踪、日志接入与符号上传是否生效。
- 配置参考:列出核心 SentryOptions、ASP.NET Core 扩展选项(SentryAspNetCoreOptions)与 MAUI 扩展选项(SentryMauiOptions)的字段、类型、默认值与环境变量。
使用方式
- 检测:运行命令扫描项目,确定框架类型、.NET 版本、是否已安装 Sentry、日志库、是否为主机应用或桌面/无服务器应用、是否存在前端目录。
- 推荐:基于检测结果给出方案。错误监控为始终推荐;追踪对 ASP.NET Core 与托管应用始终推荐;日志在应用使用 ILogger<T>、Serilog、NLog 或 log4net 时推荐;性能分析建议用于 .NET 6+ 的性能关键服务;Cron 监控在检测到 Hangfire、Quartz.NET 或定时函数时推荐。
- 接入:可选向导(npx @sentry/wizard@latest -i dotnet)或手动安装对应包并配置。
- 验证:抛出测试异常,在 Sentry Issues 中确认,随后删除测试代码。
技能还包含各功能的参考文件(error-monitoring.md、tracing.md、profiling.md、logging.md、crons.md),按需加载并遵循其中步骤。
适用场景
- 为 ASP.NET Core、WPF、WinForms、MAUI、Blazor WebAssembly、Azure Functions、AWS Lambda 或经典 ASP.NET 应用添加 Sentry。
- 需要捕获未处理异常、丰富事件上下文、按条件过滤事件。
- 需要分布式追踪、EF Core 查询跨度与自定义埋点。
- 需要将 ILogger / Serilog / NLog / log4net 日志接入 Sentry。
- 需要监控 Hangfire、Quartz.NET 或定时 Azure Functions 的漏执行与失败。
- 需要在生产环境获得包含文件名与行号的可读堆栈跟踪。
限制
- 技能中提供的 SDK 版本与 API 反映的是 Sentry NuGet 包 ≥6.1.0,实施前应始终对照 docs.sentry.io/platforms/dotnet/ 核实。
- 部分选项存在平台限制,例如 IsGlobalModeEnabled 对 WPF、WinForms、Console 必须为 true,对 MAUI 与 Blazor WASM 会自动为 true;FlushOnCompletedRequest 对 Lambda/无服务器为必需。
- MAUI 的 IncludeTextInBreadcrumbs、IncludeTitleInBreadcrumbs 等默认关闭,因其存在 PII 风险。
- SendDefaultPii 会捕获用户 IP、姓名与邮箱,需注意合规。
- 本资料未提供收费、价格或效果相关的信息。