WPF-App不向ApplicationInsights发送事件

时间:2018-03-01 11:14:24

标签: c# wpf azure events azure-application-insights

我们在将ApplicationInsights集成到客户端服务器WPF应用程序中时遇到问题:

  • 使用我们的应用程序的发行版时,事件未发送到azure门户。
  • 从Visual Studio(Professional 2017)中以调试模式打开应用程序时,所有事件 - 客户端和服务器 - 都会成功发送。
  • 我们测试了防火墙和代理暂时允许所有传出流量。
  • Windows 8 + .NET 4.5.2安装在所有计算机上,而wpf应用程序的目标是.NET 4.0

我们已根据此链接https://docs.microsoft.com/en-us/azure/application-insights/app-insights-ip-addresses将代理设置为允许通过流量,但由于暂时禁用防火墙和代理时Azure门户中未收到事件,因此这并不相关。 / p>

是否有人知道为什么在使用发布版本时未发送事件?

更新

在visual studio中构建客户端的发布版本并运行它时,它会发送事件(!)。通常,发布版本是使用Jenkins和MSBuild构建的。有区别吗?

更新2:

似乎与启动WPF-App的路径有关。如果找到应用程序并从C:\ Projects的任何子路径启动它,则会将事件发送到ApplicationInsights,如果不是,则不会。对于任何感兴趣的人,构建TelemetryClient的代码是:

private static TelemetryClient GetAppInsightsClient() {
    TelemetryClient client = null;
    if (Assembly.GetEntryAssembly() != null) {
        var config = new TelemetryConfiguration();
        config.InstrumentationKey = TelemetryKey;
        config.TelemetryChannel = new Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.ServerTelemetryChannel();
        //config.TelemetryChannel = new Microsoft.ApplicationInsights.Channel.InMemoryChannel(); // Default channel
        config.TelemetryChannel.DeveloperMode = Debugger.IsAttached;

#if DEBUG
        config.TelemetryChannel.DeveloperMode = true;
        //debug = true;
#endif

        client = new TelemetryClient(config);
        client.Context.Component.Version = Assembly.GetEntryAssembly().GetName().Version.ToString();
        client.Context.Session.Id = Guid.NewGuid().ToString();
        client.Context.User.Id = (Environment.UserName + Environment.MachineName).GetHashCode().ToString();
        client.Context.Device.OperatingSystem = Environment.OSVersion.ToString();
    }
    return client;
}

0 个答案:

没有答案