如何使用Application Insight的持久性通道防止丢失遥测pageView?

时间:2018-12-18 04:30:11

标签: c# azure azure-devops azure-application-insights

当可以使用Internet连接时,wpf应用程序的应用程序见解可以正常工作,并且我能够在azure门户中跟踪页面和事件,但是我想知道当它们没有Internet连接时是否可以将遥测数据存储在系统中的某个位置并进行检索系统联机时进行跟踪,并跟踪我没有互联网连接时执行的操作。

1 个答案:

答案 0 :(得分:0)

我建议您看看Application Insights for Desktop Applications,它提供了很好的代码示例,这些代码示例通常将 Application Insights 与桌面应用程序一起使用,以及如何工作/使用 Persistence频道。摘自链接:

public MainWindow()
{
    TelemetryConfiguration config = TelemetryConfiguration.CreateDefault();
    config.InstrumentationKey = "954f17ff-47ee-4aa1-a03b-bf0b1a33dbaf";

    config.TelemetryChannel = new PersistenceChannel();
    config.TelemetryChannel.DeveloperMode = Debugger.IsAttached;

    telemetryClient = new TelemetryClient(config);
    telemetryClient.Context.User.Id = Environment.UserName;
    telemetryClient.Context.Session.Id = Guid.NewGuid().ToString();

    InitializeComponent();
}

然后:

AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;

...

private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
    ExceptionTelemetry excTelemetry = new ExceptionTelemetry((Exception)e.ExceptionObject);
    excTelemetry.SeverityLevel = SeverityLevel.Critical;
    excTelemetry.HandledAt = ExceptionHandledAt.Unhandled;

    telemetryClient.TrackException(excTelemetry);

    telemetryClient.Flush();
}

更新

要跟踪页面浏览量,可以使用 TelemetryClient TrackPageView重载之一,例如:

telemetryClient.TrackPageView("MyPageName");

希望有帮助!