C# 如何使用Application Insight';什么是持久性通道?

C# 如何使用Application Insight';什么是持久性通道?,c#,azure,azure-devops,azure-application-insights,C#,Azure,Azure Devops,Azure Application Insights,当internet连接可用时,应用程序insights for wpf应用程序运行良好,我能够跟踪azure portal中的页面和事件,但我想知道,当没有internet连接时,是否可以在系统中的某个位置存储遥测数据,当系统联机时检索遥测数据,并跟踪我在以下情况下执行的操作:他们没有互联网连接。我建议您看一下,它有一些很好的代码示例,说明如何在桌面应用程序中使用Application Insights,以及如何使用持久性频道。摘自上述链接: public MainWindow() {

当internet连接可用时,应用程序insights for wpf应用程序运行良好,我能够跟踪azure portal中的页面和事件,但我想知道,当没有internet连接时,是否可以在系统中的某个位置存储遥测数据,当系统联机时检索遥测数据,并跟踪我在以下情况下执行的操作:他们没有互联网连接。

我建议您看一下,它有一些很好的代码示例,说明如何在桌面应用程序中使用Application Insights,以及如何使用持久性频道。摘自上述链接:

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("MyPageName");

希望有帮助

你好,你可以看看这个。这应该是可能的,但可能很难,并且有一些限制。我可以在wpf@Ivanyang中获得实现持久性通道的c#代码吗?这应该是可能的,但我不熟悉wpf项目,所以您可以创建并寻求指导。我可以在pageviews@Itay PodhajCerb中获得它吗?但持久性通道中有一个bug。。。。由于网络适配器的原因,无法收集数据。:)