gpt4 book ai didi

c# - 从 WPF 发送到 Azure Application Insights 的数据中删除 RoleInstance

转载 作者:行者123 更新时间:2023-12-03 01:31:21 25 4
gpt4 key购买 nike

我正在尝试使用以下文档将 Application Insights 添加到 WPF 应用程序:https://learn.microsoft.com/en-us/azure/azure-monitor/app/windows-desktop 。基本集成正在发挥作用。我现在尝试从提交的数据中删除 RoleInstance 属性,如文档中所述,因为它包含用户的计算机名称(个人身份信息)。这是我的代码,基于上面的文档:

遥测.cs

public static class Telemetry
{
public static TelemetryClient Client;

public static void Close()
{
if (Client != null)
{
Client.Flush();
System.Threading.Thread.Sleep(1000);
}
}

public static void Initialize()
{
TelemetryConfiguration.Active.InstrumentationKey = "xxxxxxxx";
TelemetryConfiguration.Active.TelemetryInitializers.Add(new MyTelemetryInitializer());

Client = new TelemetryClient(TelemetryConfiguration.Active);

Client.Context.Session.Id = Guid.NewGuid().ToString();
Client.Context.Device.OperatingSystem = Environment.OSVersion.ToString();
}

private class MyTelemetryInitializer : ITelemetryInitializer
{
public void Initialize(ITelemetry telemetry)
{
if (string.IsNullOrEmpty(telemetry.Context.Cloud.RoleName))
{
telemetry.Context.Cloud.RoleInstance = null;
}
}
}
}

App.xaml.cs

public partial class App : Application
{
protected override void OnExit(ExitEventArgs e)
{
Telemetry.Close();

base.OnExit(e);
}

protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);

Telemetry.Initialize();
}
}

当我调用 Telemetry.Client.TrackEvent() 时,Telemetry.Initialize() 运行,并且 RoleInstance 从一开始就是 null。但是,发送到 AI 的数据包含我的计算机名称作为 RoleInstance。不确定如何进一步调试。

注意:文档描述了与 WinForms 的集成,而我使用的是 WPF,因此我猜测使用 App.OnStartup 而不是 Main

最佳答案

我刚刚发现了一些有趣的事情,如果你为RoleInstance设置一个虚拟值,它就真的生效了。也许 null/空值将在后端被检查并替换为真实的 RoleInstance 。作为解决方法,您可以只指定一个虚拟值而不是 null/空值。

这是我的测试结果,带有虚拟值:

enter image description here

在 azure 门户中:

enter image description here

关于c# - 从 WPF 发送到 Azure Application Insights 的数据中删除 RoleInstance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62182832/

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