Sentry在ASP.NET Core应用程序中不显示HttpContext用户信息

时间:2019-05-31 12:53:36

标签: asp.net-core sentry

我只使用了webPage中的基本Sentry配置。

  "Sentry": {
    "Dsn": "",
    "IncludeRequestPayload": true,
    "SendDefaultPii": true,
    "MinimumBreadcrumbLevel": "Debug",
    "MinimumEventLevel": "Warning",
    "AttachStackTrace": true,
    "Debug": true,
    "DiagnosticsLevel": "Error"
  }

从我收集的信息中,我应该看到Setry使用其中间件从HttpContext.User获取的用户信息。

但是在网页上,我只看到Ip :: 1

enter image description here

我应该配置其他东西吗?我似乎找不到任何其他配置。

编辑

我正在使用Sentry版本1.2.0。我的HttpContext。

使用用户信息确定设置了用户。

enter image description here

对于身份验证,我使用的是Jwt令牌

services.AddAuthentication(options => { options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme; })

致谢

2 个答案:

答案 0 :(得分:0)

latest release (version 1.2.0, from 8 days ago)包含一个错误修复程序,在该错误中,用户未正确报告由应用程序手动设置的用户。

无论如何,应该通过阅读ClaimsPrincipal自动报告请求中存在的用户。可以通过将自己的IUserFactory实现添加到容器中来更改此设置,该容器允许您通过检查User来创建HttpContext对象。

如果您使用的是1.2.0版,但仍然有问题,请在GitHub存储库中针对Sentry .NET SDK提出问题:

https://github.com/getsentry/sentry-dotnet/issues/new

答案 1 :(得分:0)

我不记得我在一个工作的项目中使用了哪个版本,我也不记得确切地从哪里检测到“用户”,但是如果我记得正确的话就是ControllerBase.User

无论如何,取决于您获得的授权机制,也许您需要将HttpContext.User注入ControllerBase.User(类型为ClaimsPrincipal)

在您的serviceCollection(我猜是启动)上执行以下操作:

services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
services.AddTransient<IPrincipal>(provider => provider.GetService<IHttpContextAccessor>().HttpContext?.User);