我正在试着拿起新的哨兵SDK(以前使用过WebBuilder的扩展),但现在我卡住了…

按照文档执行操作:

我的Program.cs文件

            Sentry.SentrySdk.Init(o => o.Dsn = "mydsn");

            try
            {
                throw new Exception("Test sentry ex");
            }
            catch (Exception ex)
            {
                Sentry.SentrySdk.CaptureException(ex);
            }

这很管用

如果我将我的dsn移动到应用程序设置,如下所示

"Sentry": {
    "Dsn": "mydsn"
  },

它不起作用了

如果我删除了try/Catch并在代码中的某个位置抛出一些随机的未处理异常,则这两种方法都不起作用.但这是应该的,对吗?

我遗漏了什么?

推荐答案

SentrySdk.Init是在Sentry package上定义的.它不知道application.jsonMicrosoft.Extensions.Hosting及其朋友.

要实现这一点,您必须使用WebHost扩展方法.那是在Sentry.AspNetCore package分中.您不是静态地调用SentrySdk.Init,而是在WebHostBuilder上使用UseSentry扩展方法.

例如,使用最少的API:

var builder = WebApplication.CreateBuilder(args);

builder.WebHost.UseSentry();

var app = builder.Build();

app.UseSentryTracing();

这样,您在application.json上配置的选项将自动启用.

这里有关于ASP.NET核心集成的文档:https://docs.sentry.io/platforms/dotnet/guides/aspnetcore/

.net相关问答推荐

在计算Total毫秒时,.NET TimeSpan类中是否存在错误?

无法在Ubuntu 22.04.3上运行带有Rider 2023和DotNet-8.0的项目

在 Inno Setup 中判断给定服务的依赖服务

为什么解码后的字节数组与原始字节数组不同?

使用 PostAsJsonAsync C# 时出现错误请求

如何创建 LINQ to SQL 事务?

log4net 与 TraceSource

如何让 DateTimePicker 显示一个空字符串?

什么是编组?当某些东西被编组时会发生什么?

如何使用转储文件来诊断内存泄漏?

C# 方法可以定义为采用的最大参数数是多少?

Int 到字节数组

操作对事务的状态无效错误和事务范围

在 C# 中将字符串转换为十六进制字符串

如何过滤具有多个条件的 Directory.EnumerateFiles?

C# (.NET) 设计缺陷

如何判断对象是否已在 C# 中释放

如何从 HashSet 中检索实际项目?

序列化一个可为空的 int

从不同程序集中的类名中解析类型