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

时间:2017-08-21 14:00:20

标签: c# azure-application-insights

我希望在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上有一个登录方法可以返回一些信息,但调用这个初始化程序是我很困惑的事情。

1 个答案:

答案 0 :(得分:1)

我们曾经遇到过同样的问题,虽然不是用户ID,而是操作ID。但是同样的原则可以在这里应用。我们使用configuration.TelemetryInitializers.Add(new RealUserIDTelemetryInitializer(() => CallContext.LogicalGetData(UserId)?.ToString())); 为初始化程序提供数据(请参阅初始化程序here的完整代码和用法here)。

:before

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

ul li
{
    display: inline-block;
}
.icon-tutti:before {
    content: "\e908";
}

span [class^=icon-] {
    font-size: 1.3em;
    margin-right: 10px;
    color: #ff653e;
}

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