我只使用了webPage中的基本Sentry配置。
"Sentry": {
"Dsn": "",
"IncludeRequestPayload": true,
"SendDefaultPii": true,
"MinimumBreadcrumbLevel": "Debug",
"MinimumEventLevel": "Warning",
"AttachStackTrace": true,
"Debug": true,
"DiagnosticsLevel": "Error"
}
从我收集的信息中,我应该看到Setry使用其中间件从HttpContext.User获取的用户信息。
但是在网页上,我只看到Ip :: 1
我应该配置其他东西吗?我似乎找不到任何其他配置。
编辑
我正在使用Sentry版本1.2.0。我的HttpContext。
使用用户信息确定设置了用户。
对于身份验证,我使用的是Jwt令牌
services.AddAuthentication(options => { options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme; })
致谢
答案 0 :(得分:0)
latest release (version 1.2.0, from 8 days ago)包含一个错误修复程序,在该错误中,用户未正确报告由应用程序手动设置的用户。
无论如何,应该通过阅读ClaimsPrincipal
自动报告请求中存在的用户。可以通过将自己的IUserFactory实现添加到容器中来更改此设置,该容器允许您通过检查User
来创建HttpContext
对象。
如果您使用的是1.2.0版,但仍然有问题,请在GitHub存储库中针对Sentry .NET SDK提出问题:
答案 1 :(得分:0)
我不记得我在一个工作的项目中使用了哪个版本,我也不记得确切地从哪里检测到“用户”,但是如果我记得正确的话就是ControllerBase.User
无论如何,取决于您获得的授权机制,也许您需要将HttpContext.User注入ControllerBase.User(类型为ClaimsPrincipal)
在您的serviceCollection(我猜是启动)上执行以下操作:
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
services.AddTransient<IPrincipal>(provider => provider.GetService<IHttpContextAccessor>().HttpContext?.User);