Sentry 异常日志记录 .NET Core

Sentry Exception logging .NET Core

我正在尝试在我的 .NET Core 应用程序中记录所有意外异常。我在我的异常处理中间件中设置了哨兵。当我尝试使用 SentrySDK.CapetureMessage(e.Message) 记录异常消息时,它会工作并显示在哨兵仪表板中。但是,当我尝试使用 SentrySDK.CapetureException(e) 记录实际异常时,它不会记录任何内容并引发错误:

fail: Sentry.ISentryClient[0]
      An error occurred when capturing the event System.IO.FileLoadException: Could not load file or assembly 'System.Reflection.Metadata, Version=5.0.0.0, Culture=neutral, PublicKeyToken=xx'. The located assembly's manifest definition does not match the assembly reference. (0x80131040)
      File name: 'System.Reflection.Metadata, Version=5.0.0.0, Culture=neutral, PublicKeyToken=xx'

奇怪的是,当我在我的中间件异常处理程序之外调用 SentrySDK.CapetureException(e) 时,确实会记录异常。坚持了一段时间,任何帮助将不胜感激。

据报道,这是在 Sentry 的 .NET SDK 3.3.4(很可能是 3.4.0)版本之后一段时间引入的回归, 影响面向 .NET 的项目核心 3.0 或 3.1.

这是一个 GitHub 跟踪错误的问题:https://github.com/getsentry/sentry-dotnet/issues/1050

目前,最好的解决方法是将 Sentry SDK 降级到 3.3.4 版本。我们会尽快解决这个问题。抱歉给您带来不便!

更新:这应该在最新版本 (v3.6.0) 中得到修复。

解决方法是将依赖项直接添加到您的项目中:

<PackageReference Include="System.Reflection.Metadata" Version="5.0.0" />