gpt4 book ai didi

c# - 将自定义用户名设置为 Initializer Application Insights

转载 作者:太空宇宙 更新时间:2023-11-03 12:24:21 25 4
gpt4 key购买 nike

我希望将登录用户名添加到 Application Insights 以替换默认的 cookie。我找到了这个post这样做是这样的

public class RealUserIDTelemetryInitializer:ITelemetryInitializer
{
public void Initialize(Microsoft.ApplicationInsights.Channel.ITelemetry telemetry)
{
// Replace this with your custom logic
if (DateTime.Now.Ticks % 2 > 0)
{
telemetry.Context.User.Id = "Ron Weasley";
}
else
{
telemetry.Context.User.Id = "Hermione Granger";
}
}
}

我的问题是如何将数据传递到其中?我的 Api 上有一个登录方法,它返回一些信息,但调用此初始化程序是我感到困惑的事情。

最佳答案

我们曾经遇到过同样的问题,虽然不是针对用户 ID,而是针对操作 ID。但同样的原则也适用于此。我们使用了 Func<T>为初始化程序提供数据(请参阅初始化程序的完整代码 here 和用法 here )。

public class RealUserIDTelemetryInitializer:ITelemetryInitializer
{
private readonly Func<string> usernameProvider;

public RealUserIDTelemetryInitializer(Func<string> usernameProvider)
{
this.usernameProvider = usernameProvider;
}
public void Initialize(Microsoft.ApplicationInsights.Channel.ITelemetry telemetry)
{
telemetry.Context.User.Id = usernameProvider.Invoke();
}
}

然后使用代码添加初始化程序:

configuration.TelemetryInitializers.Add(new RealUserIDTelemetryInitializer(() =>
CallContext.LogicalGetData(UserId)?.ToString()));

正如您在我们的示例中看到的,数据是使用当前线程上的数据提供的,但在您的示例中,我认为可以更轻松地访问用户名,因此您可能会注入(inject)另一个 Func。

关于c# - 将自定义用户名设置为 Initializer Application Insights,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45799044/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com